ggplot2中每个变量多观测值的geom_point:位置偏移与颜色设置问题
解决ggplot2绘制分组系数图的问题
我来帮你搞定这个系数图的绘制问题,你遇到的报错和布局问题,其实都是因为没正确设置美学映射和位置调整,下面一步步给你修正:
问题1:"Aesthetics must be either length 1 or the same as the data"报错
这个错误是因为你没有把colour这个美学属性和数据里的group变量绑定起来。你直接用了scale_colour_manual,但ggplot不知道要根据哪个变量来分配颜色,所以会提示长度不匹配。解决方法很简单:把colour=group加入到主图层的aes()里。
问题2:同一变量下的两个组别无法上下排列
你尝试用position=dodge是不对的,dodge是水平方向的偏移(适合柱状图这类x轴分组的情况),而我们需要的是垂直方向的偏移,应该用position_dodgev()函数,通过height参数控制两个元素的垂直间距。
修正后的完整代码
example<-data.frame(group=c("group1", "group2", "group1", "group2"), variable=c("variable1", "variable1", "variable2", "variable2"), value=c(0.4, 0.2, 0.3, 0.2), min=c(0.3, 0.1, 0.2, 0.1), max=c(0.5, 0.3, 0.4, 0.3)) groupcolor<-c("group1"="red", "group2"="purple") ggplot(example, aes(x=value, y=variable, colour=group))+ theme_bw()+ scale_x_continuous(breaks=seq(0.0,0.6,0.2), limits=c(0.0, 0.6))+ geom_point(size=2, position=position_dodgev(height=0.2))+ geom_errorbarh(mapping=aes(xmin=min, xmax=max), height=0.1, position=position_dodgev(height=0.2))+ scale_colour_manual(values=groupcolor)
代码说明
aes(x=value, y=variable, colour=group):把颜色映射到group变量,让ggplot知道每个group对应不同颜色,解决美学长度不匹配的问题。position=position_dodgev(height=0.2):给点和误差棒都加上垂直偏移,height=0.2控制两个组别之间的垂直距离,你可以根据需要调整这个数值(比如改成0.3会让间距更大)。- 保持
scale_colour_manual(values=groupcolor):这个部分是对的,用来自定义你想要的颜色。
运行这段代码后,就能得到你想要的效果:y轴显示两个变量,每个变量对应上下排列的红色(group1)和紫色(group2)的系数点及置信区间啦~
内容的提问来源于stack exchange,提问作者R.Van
相关产品推荐
相关产品推荐

