近期在看一篇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)
图片
效果是一样的。觉得分享有用的点个赞、分享下再走呗!
网友评论