我在使用geom_text()和annotate()时遇到了一些问题。首先,我想在图中显示点图/条形图的观察数。我现在已经通过存储数字的 Dataframe 中的附加向量笨拙地解决了这个问题。
library(dplyr)
library(ggplot2)
v1 <- c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2)
v2 <- c(0,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2)
v3 <- c(13,67,89,280,40,1,23,99,32,1,75,280,270,200,196,450,320,277,23,4,1,2,5,89,45,23,11,1,3,23,100,100,100,100,100,200,100,11,6,6,123,100,100,100,100,100,12,86,11,390,75,100,110,19,299,100,100,100,100,100,100,100,100,11,100,120,110,100,100,423,100,279,100,100,100,12,100,100,75,5,10,10,10,10,10)
v4 <- c(4,NA,NA,NA,5,NA,NA,NA,NA,NA,9,NA,NA,NA,NA,NA,NA,NA,NA,10,NA,NA,NA,NA,NA,NA,NA,NA,NA,22,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,34,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA)
summary <- data.frame(v1, v2, v3, v4)
summary$v1 <- as.factor(summary$v1)
summary$v2 <- as.factor(summary$v2)
ggplot(summary, aes(x = v1, y = v3, fill = v2)) +
geom_dotplot(binaxis = "y", stackdir = "center", binwidth = 5, position = position_dodge(0.75), dotsize = 1) +
geom_text(aes(label = ifelse(v4>0, v4, NULL), y=500), position=position_dodge(width=0.75), vjust=-0.25, hjust=0)
现在我有一个问题:
我想在观察次数(v4)前插入一个斜体的“n”。我也在这方面做了很多研究。我找到的一个解决方案是substitute(paste0(italic('n='), summary$v4))
,但在这里我得到了以下错误:Error in rep(yes, length.out = len) : attempt to replicate an object of type 'language'.
如果我使用以下代码:expression(paste0(italic('n='), summary$v4))
“n=”以斜体显示,但变量被视为文本,并且不显示变量的内容。
here an example image
可能也有一个自动解决方案,如何自动计算观察的数量。在这里,我也会很高兴得到改进和帮助。
1条答案
按热度按时间uidvcgyl1#
您可以在
geom_text
中使用parse = TRUE