Blu*_*ist 5 typography r legend ggplot2
我试图将我的传奇元素的某些部分改为斜体。我已经能够使用此OP中的答案来获取要斜体化的子集,但这会在文本显示方式方面造成问题。
以下是数据(略作修改):
Behaviour Repeatability Age stage
Activity 0.1 PE A
Activity 0.5 PE2 A
Activity 0.5 PW B
Activity 0.5 A C
Activity 0.4 A2 C
Activity 0.4 PW1 B
Aggression 0.2 PE A
Aggression 0.3 PE2 A
Aggression 0.3 PW B
Aggression 0.4 A C
Aggression 0.3 A2 C
Aggression 0.0 PW1 B
Run Code Online (Sandbox Code Playgroud)
当我尝试斜体是基于这个括号中的图例文本的解决方案,该地块被搞砸:
下面是我用来获取该图的代码(减去不需要的格式):
ggplot(df, aes(x = stage, y = Repeatability, shape = Behaviour, colour=Age, linetype=Age)) +
geom_point() +
scale_colour_manual(values = c("#D55E00", "#0072B2", "black", "black", "#CC79A7", "black"), name = "Study", breaks=c("A","A2", "PE", "PE"=="PE2", "PW", "PE"=="PW1"),
labels=c(
(expression("Taylor et al. 2012", paste(italic("\n 366 adults")))),
(expression("Boon et al. 2008", paste(italic("\n (71 adult females)")))),
(expression("This study", paste(italic("\n (102 juveniles)")))),
"This study",
(expression("Kelley et al. 2015", paste(italic("\n (16 yearlings)")))),
"This study")) +
theme(legend.key.size = unit(2.5, 'lines'))
Run Code Online (Sandbox Code Playgroud)
就像axeman在评论中提到的:多行表达式没有得到很好的支持。如果你使用表达式,\n你会遇到调整问题。发生这种情况是因为 ggplot 与网格维护者一起工作(检查这个git 问题)。
您可以在绘图的 with 中换行atop,这是 ar 基本函数,也适用于 ggplot。以下代码根据您的情况进行了调整。使用 时仍需要该表达式italic。
library(ggplot2)
ggplot(df, aes(x = stage, y = Repeatability, shape = Behaviour, colour=Age, linetype=Age)) +
geom_point() +
scale_colour_manual(values = c("#D55E00", "#0072B2", "black", "black", "#CC79A7", "black"), name = "Study", breaks=c("A","A2", "PE", "PE"=="PE2", "PW", "PE"=="PW1"),
labels=c(
(expression(atop("Taylor et al. 2012", italic("(366 adults)")))),
(expression(atop("Boon et al. 2008", italic("(71 adult females)")))),
(expression(atop("This study", italic("(102 juveniles)")))),
"thisstudy",
(expression(atop("Kelley et al. 2015", italic("(16 yearlings)")))),
"thisstudy"))+
theme(legend.key.size = unit(2.5, 'lines'))
Run Code Online (Sandbox Code Playgroud)
默认情况下,您的标签现在居中,因为atop创建了一个公式表达式。
如果你想使用expressionwith ,paste你可以这样做:
(expression(paste("Taylor et al. 2012 \n", italic("(366 adults)"))))
Run Code Online (Sandbox Code Playgroud)
但这是由于换行符调整错误而发生的。