R 如何在ggplot标签文本的表达式(粘贴(斜体())中添加换行符?

R 如何在ggplot标签文本的表达式(粘贴(斜体())中添加换行符?,r,ggplot2,plot,label,expression,R,Ggplot2,Plot,Label,Expression,我有这样一个情节: 如您所见,我已经应用了c(表达式(粘贴(斜体(“TERT”),“p-wt”),“\nn=504”)、表达式(粘贴(粘贴(斜体(“TERT”),“-alt”)))将TERT标签文本斜体化。我需要对标签文本应用换行符转义,如\n所示。subquet标签文本n=504不应为斜体,因此如下所示: 您可以在粘贴中看到我的尝试。。。“\nn=504” 如何解决这个问题 剧本 library(tidyverse) ggplot(p, aes(time, P)) + geom_ri

我有这样一个情节:

如您所见,我已经应用了
c(表达式(粘贴(斜体(“TERT”),“p-wt”),“\nn=504”)、表达式(粘贴(粘贴(斜体(“TERT”),“-alt”)))
将TERT标签文本斜体化。我需要对标签文本应用换行符转义,如
\n
所示。subquet标签文本
n=504
不应为斜体,因此如下所示:

您可以在
粘贴
中看到我的尝试。。。“\nn=504”

如何解决这个问题

剧本

library(tidyverse)
ggplot(p, aes(time, P))  +
  geom_ribbon(aes(ymin = lower, ymax = upper, fill = CIF), alpha = 0.175) +
  geom_line(aes(color = CIF), size=.9) +
  scale_y_continuous(name="Absolute risk of recurrence-free death", breaks = seq(0,.30,.05), 
                     labels=c("0%", "5%", "10%", "15%", "20%", "25%", "30%")) +
  scale_x_continuous(name="Time in months", breaks = seq(0,84,6)) +
  coord_cartesian(xlim=c(0,84), ylim=c(0,.3)) +
  scale_color_manual(name = "",
                     values=c("#2C77BF", "#E38072"),
                     labels=c(expression(paste(italic("TERT"),"p-wt", "\nn = 504")), expression(paste(italic("TERT"),"-alt")))) + 
  scale_fill_manual(name = "", 
                    values = c("#2C77BF", "#E38072"),
                    labels=c(expression(paste(italic("TERT"),"p-wt","\nn = 504")), expression(paste(italic("TERT"),"-alt"))))
资料


p使用
top
将文本置于其他文本之上。请参见
?plotmath

ggplot(p, aes(time, P))  +
  geom_ribbon(aes(ymin = lower, ymax = upper, fill = CIF), alpha = 0.175) +
  geom_line(aes(color = CIF), size=.9) +
  scale_y_continuous(name="Absolute risk of recurrence-free death", breaks = seq(0,.30,.05), 
                     labels=c("0%", "5%", "10%", "15%", "20%", "25%", "30%")) +
  scale_x_continuous(name="Time in months", breaks = seq(0,84,6)) +
  coord_cartesian(xlim=c(0,84), ylim=c(0,.3)) +
  scale_color_manual(name = "",
                     values=c("#2C77BF", "#E38072"),
                     labels=c(expression(atop(paste(italic("TERT"),"p-wt"), "n = 504")), expression(paste(italic("TERT"),"-alt")))) + 
  scale_fill_manual(name = "", 
                    values = c("#2C77BF", "#E38072"),
                    labels=c(expression(atop(paste(italic("TERT"),"p-wt"),"\nn = 504")), expression(paste(italic("TERT"),"-alt"))))

太好了,谢谢!换行符上的文本自动居中。如何将新行上的文本左对齐?我不确定
top
是否有简单的左对齐方法。可能
phantom
会让您更接近。另一个可能的选项是在
ggplot2
组件中处理标记。
ggplot(p, aes(time, P))  +
  geom_ribbon(aes(ymin = lower, ymax = upper, fill = CIF), alpha = 0.175) +
  geom_line(aes(color = CIF), size=.9) +
  scale_y_continuous(name="Absolute risk of recurrence-free death", breaks = seq(0,.30,.05), 
                     labels=c("0%", "5%", "10%", "15%", "20%", "25%", "30%")) +
  scale_x_continuous(name="Time in months", breaks = seq(0,84,6)) +
  coord_cartesian(xlim=c(0,84), ylim=c(0,.3)) +
  scale_color_manual(name = "",
                     values=c("#2C77BF", "#E38072"),
                     labels=c(expression(atop(paste(italic("TERT"),"p-wt"), "n = 504")), expression(paste(italic("TERT"),"-alt")))) + 
  scale_fill_manual(name = "", 
                    values = c("#2C77BF", "#E38072"),
                    labels=c(expression(atop(paste(italic("TERT"),"p-wt"),"\nn = 504")), expression(paste(italic("TERT"),"-alt"))))