2015-06-19 42 views
0

使用GGPLOT2值到计数图我有一个数据帧,如下所示:映射意味着中的R

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 $均值中。我无法弄清楚如何做到这一点。我已经尝试用水平线选项使用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) 

谢谢...

+0

可能的[复制](http://stackoverflow.com/questions/4244157/ggplot2-add-line-for-average-per-group) – aosmith

+0

@aosmith谢谢。我在那篇文章之后实际上模拟了我的最后一个语法(我使用了他们所做的类似的geom_line())。然而,区别在于我有一个平均值向量,他们使用函数来计算平均值。我不能使用它们使用的相同功能,因为我正在为每个可能的观察计数,而不是每个观察都单独进行,就像他们所做的一样。 – luckButtered

+0

但是,您是否尝试过使用'geom_errorbar'提出的答案?您可以将'yintercept = mean'放在'aes'内而不是'yintercept ='mean''外部以使用您的计算值。 – aosmith

回答

1

你可以用geom_segment做到这一点:

ggplot(df, aes(variable, value)) + 
    geom_point(aes(size = Count), pch=15) + 
    geom_segment(aes(x=variable, y=mean-.1, 
        xend=variable, yend=mean+.1), 
       color="red", size=I(40)) 

enter image description here