今天公众号的一位读者留言说要做气泡图。他的数据如下

image.png
ID是X,log2FC用作y,class是分类变量用来填充颜色 范围是A到I。P值用来映射点的大小。
还有一个要求是 能否突出p值<0.05?,我目前想到的办法是按0.05为界给P值分组,然后用不同形状的点来映射。
df<-read.csv("bubble_plot.csv",
header=T,stringsAsFactors = F)library(ggplot2)
ggplot(df,aes(x=ID,y=log2FC))+
geom_point()
image.png
ggplot(df,aes(x=ID,y=log2FC,color=Class))+
geom_point()
image.png
ggplot(df,aes(x=ID,y=log2FC,
color=Class,size=pvalue))+
geom_point()
image.png
ggplot(df,aes(x=ID,y=log2FC,
color=Class,size=pvalue))+
geom_point()+
scale_size_continuous(range = c(1,10))
image.png
ggplot(df,aes(x=ID,y=log2FC,
color=Class,size=pvalue))+
geom_point(alpha=0.5)+
scale_size_continuous(range = c(1,10))
image.png
df$group<-ifelse(df$pvalue<0.05,"pvalue<0.05",
"pvalue>=0.05")
ggplot(df,aes(x=ID,y=log2FC,size=pvalue,
color=Class,shape=group))+
geom_point(alpha=0.5)+
scale_size_continuous(range=c(1,10))
image.png
ggplot(df,aes(x=ID,y=log2FC,size=pvalue,
color=Class,shape=group))+
geom_point(alpha=0.5)+
scale_size_continuous(range=c(1,10))+
theme_bw()
image.png
df$group<-factor(df$group,levels = c("pvalue>=0.05",
"pvalue<0.05"))
ggplot(df,aes(x=ID,y=log2FC,size=pvalue,
color=Class,shape=group))+
geom_point(alpha=0.5)+
scale_size_continuous(range=c(1,10))+
theme_bw()
image.png
首先准备 11个颜色,class有多少个类别就准备多少个颜色
cols<-c("#0055AA","#C40003","#00C19B","#EAC862","#7FD2FF","#007ED3","#B2DF8A","#FFACAA","#FF9D1E","#C3EF00","#CAB2D6","#894FC6")
ggplot(df,aes(x=ID,y=log2FC,size=pvalue,
color=Class,shape=group))+
geom_point(alpha=0.5)+
scale_size_continuous(range=c(1,10))+
theme_bw()+
scale_color_manual(values = cols)
image.png
ggplot(df,aes(x=ID,y=log2FC,size=pvalue,
color=Class,shape=group))+
geom_point(alpha=0.5)+
scale_size_continuous(range=c(1,10))+
theme_bw()+
scale_color_manual(values = cols)+
labs(x="",y="log2FC")
image.png
这样在图上突出显示的是P值大于0.05的那些点,如果想突出显示p值小于0.05的点
我暂时先到一个办法是对p值进行-log2转换,这样原来的小值就变成大值了,试一下这个想法
df$pvalue1<- -log2(df$pvalue)
ggplot(df,aes(x=ID,y=log2FC,size=pvalue1,
color=Class,shape=group))+
geom_point(alpha=0.5)+
scale_size_continuous(range=c(1,10))+
theme_bw()+
scale_color_manual(values = cols)+
labs(x="",y="log2FC")
image.png
现在又变成三角对应的pvalue是小于0.05的,把它改成圆圈
df$group<-factor(df$group,
levels = c("pvalue<0.05",
"pvalue>=0.05"))
ggplot(df,aes(x=ID,y=log2FC,size=pvalue1,
color=Class,shape=group))+
geom_point(alpha=0.5)+
scale_size_continuous(range=c(1,10))+
theme_bw()+
scale_color_manual(values = cols)+
labs(x="",y="log2FC")
image.png

image.png
-log2好像变换不太合适,暂时想不到比较好的办法了。 最终图反映的信息是,圆点代表p值小于0.05,圆点越大,p值越小。叶色映射的是不同的分类
欢迎大家关注我的公众号小明的数据分析笔记本