在R中通过geom_text向ggplot添加小于符号"<"

3
简短版本: 我该如何使这个人为的代码正确地绘制希腊字母β和标签字符串的其余部分,空格、小于号和数字按输入格式化?
library("ggplot2")
df<-data.frame(a=1:15,b=6:20)
ggplot(data=df, aes(x=a,y=b)) + geom_point() +
       geom_text(x=5,y=4,label="beta=1.00 p<0.0001", parse=TRUE)

如果我省略", parse=TRUE"参数,该字符串将运行良好,但不会给我一个真正的希腊字母beta。如果我保留它,一切都会变得一团糟。
长篇版本(为什么我找不到重复的内容):我最终在 如何在ggplot2中使用希腊符号? 找到了放置希腊字符在 ggplot 上的方法取决于你将它们放在哪里。由于我正在使用 geom_text 将文本字符串强制放在图表主体上,因此我的尝试使用 expression(beta) 失败了,我最近开始使用上面提到的 parse 参数。我遇到了 如何在 ggplot 的 geom_text() 中添加字母数字和希腊字符?,我认为这是我的答案,但修复 "空格" 导致额外的括号弹出,"=" 被逗号替换,并且我之前格式化的所有文本数值都丢失了格式。

提供一个使用 parse 参数的指南以及如何理解对我来说完全不直观的东西的链接对我非常有帮助,可能也会对将来的 R 用户有帮助。许多搜索结果都是徒劳的。

1个回答

11
这应该就可以了:
g <- ggplot(data=df, aes(x=a,y=b)) + geom_point()
g + annotate("text", x=5,y=4,parse=TRUE, label="beta==1.00 * ' p<0.0001'")

只需要使用单引号将标签分割到空格的一侧,并使用*连接两个标签。同时需要使用==进行比较。

图片描述


太好了!谢谢你!我从中的实验中发现两个添加:在“1.00”周围加上单引号使我能够保留我的有效数字。我还注意到这适用于annotate()和geom_text(),其他答案建议使用annotate()来满足特定需求的原因。关于这种语法的指南有什么建议吗?我现在可以让这个例子工作,但仍然不理解它,以备将来可能出现的需要。 - mightypile
2
不确定是否有语法的明确指南 - 但是这个 plotmath 帮助文件对于学习使用什么语法很有用:https://stat.ethz.ch/R-manual/R-devel/library/grDevices/html/plotmath.html - jalapic
1
label="beta==1.00 * italic(p) ' < 0.0001'",其中p为斜体 - CrunchyTopping

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接