复现Nature genetic图表:ggplot绘制点线图

近期在看一篇Nature genetics关于自闭症的研究文章的时候,看到了这样的可视化图表,是一种点线图。

图片
图片

文章提供了数据,一开始我想到的绘制方法是画出线图,线的上下就是数据最大值和最小值,最后加上平均值的点图就完成了。之前我们做误差线的时候使用过误差线绘制的函数,就可以解决线的绘制。


setwd("D:/KS项目/公众号文章/ggplot点线图")
df <- read.csv("点线图.csv", header = T)
#做这个图其实需要三个要素就足够了,一个是点的平均值
#另外就是线的最大值和最小值

#分别计算下
df$mean <- rowMeans(df[,3:6])
df$Max <- apply(df[,3:6], 1, function(x){max(x)})
df$Min <- apply(df[,3:6], 1, function(x){min(x)})


library(ggplot2)
library(forcats)
df$Phenotype <- as.factor(df$Phenotype)
df$Phenotype <- fct_inorder(df$Phenotype)

#设置下坐标轴文字颜色
col <- c(rep("black",13),rep("red",6))

作图即可。

ggplot(data=df,aes(x=Phenotype,y=mean))+
  geom_errorbar(aes(ymin=Min,ymax=Max),width=0, color='#00798C')+
  geom_point(size=5, color='#00798C')+
  theme_classic()+
  theme(axis.text.x = element_text(colour = 'black',size = 10,angle=45,vjust = 1,hjust = 1, color = col),
        axis.text.y = element_text(colour = 'black',size = 10),
        axis.title.x = element_blank(),
        axis.title.y = element_text(colour = 'black',size = 12))+
  ylab("SRC")+
  geom_hline(yintercept =0,linetype=1,size=0.5)
图片

绘制完成,效果可以,后来百度发现,还有很多种做法,这里提供两种。


#method2
ggplot(data=df,aes(x=Phenotype,y=mean))+
  geom_pointrange(aes(ymin=Min,ymax=Max),size=1)
图片
#method3
ggplot(data=df,aes(x=Phenotype,y=mean))+
  geom_linerange(aes(ymin=Min,ymax=Max),size=1)+
  geom_point(size=5)
图片

效果是一样的。觉得分享有用的点个赞、分享下再走呗!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容