gpt4 book ai didi

r - ggplot 将图例的一部分斜体化为多行

转载 作者:行者123 更新时间:2023-12-04 21:29:26 25 4
gpt4 key购买 nike

我试图将我的图例元素的一部分斜体。我已经能够使用此 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

这是情节(没有斜体):
enter image description here

当我尝试根据此 solution 将括号中的图例文本设为斜体时,情节变得一团糟:

enter image description here

我用来获取此图的代码如下(减去不需要的格式):
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'))

最佳答案

就像 axeman 提到的一样在评论中:多行表达式没有得到很好的支持。如果您使用带有 \n 的表达式你会遇到调整问题。发生这种情况,因为 ggplot 与网格维护者一起工作(检查 this git 问题)。

您可以使用 atop 在情节中换行,这是一个 r 基函数,也适用于 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'))

输出图如下 output

默认情况下,您的标签现在居中,因为 atop创建公式表达式。

如果您想使用您的 expressionpaste你可以这样做:
(expression(paste("Taylor et al. 2012 \n", italic("(366 adults)"))))

但这发生在换行符的错误调整中。

关于r - ggplot 将图例的一部分斜体化为多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57168938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com