如何在ggplot2中增加图例标题行间距?

时间:2016-12-12 20:37:19

标签: r ggplot2

我是一个全新的R用户,这个社区在我的学习过程中非常有帮助,谢谢!

我有一个ggplot图例标题,其中包含一个斜体字和一个上标,我试图以三条整齐的线条堆叠。斜体字和上标似乎占用了额外的空间,因此不能很好地叠加。理想情况下,我的头衔是:

Macrocystis  密度m ^ 2

每个单词都在自己的行上,但我遇到麻烦......

这是我的代码(对不起,这很难看,记得我是新手!)以及由此产生的情节:

    ggplot(mtcars,aes(x=wt,y=mpg, color = hp))+
      geom_jitter(size = 16) + 
      scale_color_continuous(high="black", low="light grey") +
      theme_bw() +
      theme(axis.text=element_text(size=20),
            axis.title=element_text(size=20),
            legend.title=element_text(size=20),
            legend.text=element_text(size =15),
            legend.key = element_rect(size = 5),
            legend.key.height=unit(3,"line"),
            legend.key.size = unit(2.5, 'lines')) +
      xlab("Weight") +
      ylab("MPG") +
      labs(color = expression(paste("Previous\n", italic("Macrocystis\n"),
      "Density", " ", m^2), sep=" "))

legend label with italicized Mac but weird spacing over two lines

感谢您的帮助,感谢您提供这么好的资源!

更新:感谢@baptiste让我更近一点,但它让我有点疯狂,我无法按正确的顺序得到这些话。这是我迄今为止最好的选秀:

    ggplot(mtcars,aes(x=wt,y=mpg, color = hp))+
      geom_jitter(size = 16) + 
      scale_color_continuous(high="black", low="light grey") +
      theme_bw() +
      theme(axis.text=element_text(size=20),
            axis.title=element_text(size=20),
            legend.title=element_text(size=20),
            legend.text=element_text(size =15),
            legend.key = element_rect(size = 5),
            legend.key.height=unit(3,"line"),
            legend.key.size = unit(2.5, 'lines')) +
      xlab("Weight") +
      ylab("MPG") +
      labs(color = expression(atop(italic("Macrocystis\n"), 
      paste("Previous\nDensity", " ", m^2), sep=" ")))

Mac previous density instead of previous mac density

2 个答案:

答案 0 :(得分:2)

这有点hacky,因为这并不是真的支持,但是如果你使用嵌套的atop()和scriptstyle()进行某些格式化:

ggplot(mtcars,aes(x=wt,y=mpg, color = hp))+
geom_jitter(size = 16) + 
scale_color_continuous(high="black", low="light grey") +
theme_bw() +
theme(axis.text=element_text(size=20),
axis.title=element_text(size=20),
legend.title=element_text(size=20),
legend.text=element_text(size =15),
legend.key = element_rect(size = 5),
legend.key.height=unit(3,"line"),
legend.key.size = unit(2.5, 'lines')) +
xlab("Weight") +
ylab("MPG") +
labs(color = expression(atop(scriptstyle("Previous"), atop(paste(italic("       Macrocystis")),
" Density m" ^2 ), sep=" ")))

enter image description here

答案 1 :(得分:0)

使用tableGrob hack将表达式拆分成多行,

enter image description here