2017-10-07 4 views
0

Par défaut, la boîte/clé de légende est alignée à gauche du titre de la légende. Comme j'ai un long titre de légende, je veux l'aligner sur le centre à la place. J'ai essayé theme et guide_legend sans aucun succès. Toute suggestion serait appréciée. Merci!Comment aligner la boîte de légende au milieu du titre de la légende dans ggplot2?

  • données

    df <- structure(list(Flow = c(0.992762, 0.802408, 0.9826, 0.754863, 
         0.174542, 0.056777), Coef = c(0.62, 0.49, 0.38, 0.59, 0.25, 0.67 
         ), VeryLongLegendTitle = c(4.47680710313542, 18.8500193246859, 
         5.82742564783431, 23.3217237977105, 13.0155332302148, 88.4960885143824 
         )), class = "data.frame", row.names = c(NA, -6L), .Names = c("Flow", 
         "Coef", "VeryLongLegendTitle")) 
    
  • code

    library(ggplot2) 
    p1 <- ggplot(df, aes(x = Flow, y = Coef, color = VeryLongLegendTitle)) + 
        xlab(NULL) + scale_x_continuous(limits = c(0.0, 1.0), breaks = c(0.25, 0.75)) + 
        geom_point(size = 2, alpha = 0.8) + 
        theme_bw(base_size = 14) + 
        theme(axis.text.x = element_text(angle = 0, vjust = 0.5)) 
    p1 
    
    p1 + theme(legend.title.align = 0.5) 
    p1 + theme(legend.title = element_text(hjust = 0.5)) 
    p1 + guides(color = guide_legend(title.hjust = 0.5)) 
    
  • Terrain enter image description here

+2

Il semble que le fait d'essayer de le faire verticalement serait inutilement compliqué, sans parler d'un gaspillage d'espace graphique. – www

+0

@ Je voudrais si je n'ai besoin que d'un seul complot. Cependant mon intrigue finale se compose d'environ 16 (4x4) petites parcelles individuelles. Chaque rangée de l'intrigue a une légende différente. Placer les légendes à droite est mon seul choix. Merci! – Tung

Répondre

1

Je suis d'accord avec @www mais vous pouvez essayer p1 + guides(color = guide_legend(keywidth = 5, keyheight = 2)). Il va produire quelque chose comme ceci: enter image description here

Il serait également bon de jeter un oeil à la Legend guide. Considérez-vous une légende horizontale à la place?

+0

Merci pour le lien! J'ai regardé celui-là et ['theme'] (http://ggplot2.tidyverse.org/reference/theme.html) déjà. Étrange qu'il y ait une telle option dans 'ggplot2' – Tung

+0

De rien! Vous pouvez également [mettre le titre sur deux lignes] (https://stackoverflow.com/questions/42154922/align-two-line-legend-title-to-the-left-with-expression). – ANG

+0

Merci encore! Malheureusement, la légende est juste un mot assez long – Tung