ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[R] 添加误差棒的分组折线图:geom_path: Each group consists of only one observation. Do you need to adjust the...

2019-09-01 22:00:45  阅读:411  来源: 互联网

标签:Abundance aes group observation Region adjust geom Type


想做一个简单的分组折线图,并添加误差棒,类似下面这样的:
image.png
用ggplot似乎很简单就能实现:ggplot+geom_errorbar+geom_line+geom_point,重点在于计算误差棒。
还是看示例数据吧:
image.png
Type是转录和蛋白两个组学,Region是某个组织的不同区域。想作如上图的样子,即不同区域在两个组学的折线图分布。

计算误差需要安装Rmisc包中的summarySE函数。

# summarySE 计算标准差和标准误差以及95%的置信区间.
library(Rmisc)
tgc <- summarySE(df2, measurevar="Abundance", groupvars=c("Type","Region"))

数据变成这样:
image.png
接下来就是作图了。

# 带有标准误差线的折线图
# Standard error of the mean
ggplot(tgc, aes(x=Region, y=Abundance, colour=Type)) +   
  geom_errorbar(aes(ymin=Abundance-se, ymax=Abundance+se), width=.1) +
  geom_line() +
  geom_point()

得到警告:
image.png
图是这样的,线没有画出来。
image.png
查了下网上的答案:https://blog.csdn.net/tanzuozhev/article/details/51106089
它的数据形式几乎和我的一样,但是却能正常画出来。

我想了想,是不是分组变量Type和Region没设为因子,但是设了还是一样。

查了下错误,说是要映射group,令group=1。https://stackoverflow.com/questions/27082601/ggplot2-line-chart-gives-geom-path-each-group-consist-of-only-one-observation
我这里设置了两组,用group=1或2显然不行,于是将group映射到变量:

ggplot(tgc, aes(x=Region, y=Abundance, colour=Type, group=Type)) +  
  geom_errorbar(aes(ymin=Abundance-se, ymax=Abundance+se), width=.1) +
  geom_line() +
  geom_point()

果然解决了
image.png
但我还是不明白,为啥网上的示例同样是两个分组变量,不用group也能做出来。

标签:Abundance,aes,group,observation,Region,adjust,geom,Type
来源: https://www.cnblogs.com/jessepeng/p/11443872.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有