2017-10-09 2 views
1

Das reproduzierbare Beispiel kann in diesem Tutorial für das Paket cowplot gefunden werden.Ausgerichtete Legenden auf die Mitte des Plotgitters ausrichten (mit Cowplot)

https://cran.r-project.org/web/packages/cowplot/vignettes/shared_legends.html

Kopieren Beispielcode:

library(ggplot2) 
library(cowplot) 
#down-sampled diamonds data set 
dsamp <- diamonds[sample(nrow(diamonds), 1000), ] 

# Make three plots. 
# We set left and right margins to 0 to remove unnecessary spacing in the 
# final plot arrangement. 
p1 <- qplot(carat, price, data=dsamp, colour=clarity) + 
    theme(plot.margin = unit(c(6,0,6,0), "pt")) 
p2 <- qplot(depth, price, data=dsamp, colour=clarity) + 
    theme(plot.margin = unit(c(6,0,6,0), "pt")) + ylab("") 
p3 <- qplot(color, price, data=dsamp, colour=clarity) + 
    theme(plot.margin = unit(c(6,0,6,0), "pt")) + ylab("") 

# arrange the three plots in a single row 
prow <- plot_grid(p1 + theme(legend.position="none"), 
      p2 + theme(legend.position="none"), 
      p3 + theme(legend.position="none"), 
      align = 'vh', 
      labels = c("A", "B", "C"), 
      hjust = -1, 
      nrow = 1 
      ) 
legend_b <- get_legend(p1 + theme(legend.position="bottom")) 

# add the legend underneath the row we made earlier. Give it 10% of the height 
# of one plot (via rel_heights). 
p <- plot_grid(prow, legend_b, ncol = 1, rel_heights = c(1, .2)) 
p 

Dieses Beispiel zeigt ein Diagramm, in dem die Legende zu der unteren linken Ecke des Gitters ausgerichtet gezeichnet. Allerdings war es früher anders, da die Legende dann auf die untere Mitte der Handlung ausgerichtet wurde. Hier ist ein Beispiel, das vor einigen Monaten von meinem persönlichen Code generiert wurde. https://s1.postimg.org/8pf2en1zen/Untitled.png (Upload-Tool derzeit nicht für mich arbeiten)

meinen alten Code nach einer unbekannten Menge von Änderungen in beiden Paketen Erneutes Ausführen liefert eine Legende nach unten links ausgerichtet (wie auch im Tutorial, von oben dritten Plot dargestellt): https://s1.postimg.org/3agjw7n9gf/Untitled2.png

Die Frage ist, wie Sie den Code anpassen, um die Legende an der unteren Mitte ausgerichtet zu zeichnen.

Antwort

1

können Sie legend_b diese Weise eingestellt:

legend_b <- get_legend(p1 + theme(legend.position=c(0.3,0.8),legend.direction = "horizontal")) 

einen besseren Weg:

legend_b <- get_legend(p1 + theme(legend.direction = "horizontal",legend.justification="center" ,legend.box.just = "bottom")) 
+0

Danke. Dies erfordert "Versuch und Irrtum" für andere Legendengrößen, denke ich. – nouse

+0

'legend_b <- get_legend (p1 + Thema (legend.position =" none ", legend.direction =" horizontal "))' das funktioniert auch für mich. –

+0

Fehler in get_legend (p1 + theme (legende.position = "none", legend.direction = "horizontal")): Der Plot muss eine Legende enthalten – nouse

Verwandte Themen