2017-02-22 3 views
1

Ich habe einen ggplot2 und versuche den Abstand zwischen Legenden zu erhöhen.R ggplot füge Platz zwischen Legendeneinträgen hinzu

Der folgende Code erzeugt das Grundstück unter:

library(tidyverse) 
library(ggplot2) 
year <- 2005:2015 
variablea <- 1000:1010 
variableb <- 1010:1020 
df = data.frame(year, variablea, variableb) 

df %>% gather(variable, value, -year) %>% 
    ggplot(aes(x = year, y = value, colour = variable, linetype = variable)) + 
    geom_line() + 
    theme(
    legend.key=element_blank() 
    ,legend.text=element_text(size=12) 
    ,legend.position="bottom" 
    ,legend.title=element_blank() 
    ,panel.background = element_rect(fill = "transparent") # bg of the panel 
    ,plot.background = element_rect(fill = "transparent") # bg of the plot 
) 

enter image description here

jedoch die Lücke zwischen Legendenelemente an der Unterseite für Komfort zu nahe ist.

Ich habe versucht, Lösungen von anderen Fragen anzupassen, aber sie funktionieren nicht.

Zum Beispiel funktioniert das Hinzufügen + guides(fill=guide_legend(keywidth=0.1, keyheight=0.1, default.unit="inch")) wie in Is there a way to change the spacing between legend items in ggplot2? vorgeschlagen nicht funktioniert, weil es ein Liniendiagramm ist, so dass die Zeilen einfach erweitern, um den zusätzlichen Platz zu füllen. Ich habe auch die zweite Lösung ausprobiert, die in der verknüpften Frage vorgeschlagen wird, aber es scheint die Dinge nicht zu ändern (derzeit verwende ich + scale_fill_manual(values=c("red","blue"), labels=c("variablea ","variableb "))).

Auch bin ich nicht genau sicher, wie man die in Space between gpplot2 horizontal legend elements gegebene Lösung anpasst, weil ich Faktorvariablen nicht verwende, so weit ich sagen kann.

Was kann ich tun?

Antwort

2

Man könnte so etwas wie das folgende versuchen:

df1 <- df %>% gather(variable, value, -year) 
df1$variable <- paste0(df1$variable,"\t\t\t\t\t") # enter more tabs if needed 
df1 %>% 
    ggplot(aes(x = year, y = value, colour = variable, linetype = variable)) + 
    geom_line() + 
    theme(
    legend.key=element_blank() 
    ,legend.text=element_text(size=12) 
    ,legend.position="bottom" 
    ,legend.title=element_blank() 
    ,panel.background = element_rect(fill = "transparent") # bg of the panel 
    ,plot.background = element_rect(fill = "transparent") # bg of the plot 
) + guides(linetype = guide_legend(ncol = 2,keywidth=4)) 

enter image description here

Verwandte Themen