2017-02-22 25 views
1

私はggplot2を持っていて、凡例の間隔を広げようとしています。底部の凡例アイテムとの間の隙間が快適さのために近すぎるしかしR ggplot凡例の間にスペースを追加

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

以下のコードは下記のプロットを生成します。

私は他の質問から解決策を適用しようとしましたが、機能しません。

例えば、Is there a way to change the spacing between legend items in ggplot2?に示唆されているように+ guides(fill=guide_legend(keywidth=0.1, keyheight=0.1, default.unit="inch"))を追加すると、その線グラフは機能しません。そのため、行は単に余分なスペースを埋めるように拡張されます。私はリンクされた質問で提案された2番目の解決策も試みましたが、それは事を変えないようです(現在私は+ scale_fill_manual(values=c("red","blue"), labels=c("variablea ","variableb "))を使用しています)。

また、Space between gpplot2 horizontal legend elementsで与えられた解をどのように適応させるかについては正確には分かりません。なぜなら、私が知る限り因子変数を使用していないからです。

どうすればよいですか?

答えて

2

次のような何かを試みることができる:

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

関連する問題