【发布时间】:2015-06-19 16:58:41
【问题描述】:
我有一个数据框如下:
variable=c("D","D","C","C","C","A","B","B","B","B")
value=c(80,100,70,68,65,45,33,31,36,32)
Count=as.integer(c(5,10,4,5,2,7,3,5,6,2))
mean=c(93.3,93.3,68.2,68.2,68.2,45,33.4,33.4,33.4,33.4)
df=data.frame(variable=variable,value=value,Count=Count,mean=mean)
我可以绘制一个漂亮的图(其中正方形的大小对应于具有特定 x 值和 y 值的观察计数),如下所示:
ggplot(df, aes(variable, value)) + geom_point(aes(size = Count), pch=15) + guides(fill=guide_legend(title="New")) + theme(legend.text=element_text(size=rel(2.3)), legend.title=element_text(size=rel(2.3), face="plain"), legend.position="right", axis.text = element_text(size=rel(2.3)), axis.title = element_text(size = rel(2.3))) + labs(x="Topic", y = "Percentage Grade")
但是,我现在想在四个主题中的每一个上添加一个水平条,表示平均百分比分数。这些值存储在 df$mean 中。我无法弄清楚如何做到这一点。我曾尝试将 geom_line() 函数与水平线选项一起使用...但这似乎绘制了垂直线!
ggplot(df, aes(variable, value)) + geom_point(aes(size = Count), pch=15) + guides(fill=guide_legend(title="New")) + theme(legend.text=element_text(size=rel(2.3)), legend.title=element_text(size=rel(2.3), face="plain"), legend.position="right", axis.text = element_text(size=rel(2.3)), axis.title = element_text(size = rel(2.3))) + labs(x="Topic", y = "Percentage Grade") + geom_line(stat = "hline", yintercept = df$mean)
谢谢...
【问题讨论】:
-
@aosmith 谢谢。实际上,我在那篇文章之后建模了我的最后一个语法(我使用了他们所做的类似 geom_line() )。但是,不同之处在于我有一个平均值向量,它们使用一个函数来计算平均值。我不能使用他们使用的相同功能,因为我正在处理每个可能的观察的计数,而不是像他们那样单独使用每个观察。
-
但是您是否尝试过使用
geom_errorbar的答案建议?您可以将yintercept = mean放在aes内部而不是yintercept = "mean"外部以使用您的计算值。