**
R语言数据可视化_科学统计图表1——火山图
1——什么是火山图?
火山图中每个点代表一个基因,常被用于展示差异,比如差异表达基因、差异微生物等等。
火山图的两轴分别表示基因表达值差异的显著性和差异的程度
(1)火山图的y轴是-log10(PValue),有事也可以利用PValue的校正值QValue,因此数值越高说明PValue越小,即差异越显著。
(2)横坐标是Log2(FD),即对Fold Change取log2。所以图中的点越靠两侧,基因表达量上调或者下调程度越大。
一般来说在差异基因分析过程中,我们通常将 PValue小于0.05且FD的绝对值大于2为差异基因。
当然在差异基因数量过多的时候,我们可以调节筛选标准,选择适当数量的差异表达基因投入后续的统计流程中。但是一般来讲,不会设置PValue的值大于0.05。
2——火山图要怎么画?
(1)需要的数据格式
数据类型为data.frame。包含基因名称,PValue、FD,调控信息等数据。
(2)R语言 ggplot2绘制代码
library(ggplot2)
#所用绘制包ggplot2
Data = data.frame(......)
#Data是绘制火山图所用数据
ggplot(data = Data,aes(x = `log2(FD)`,y = `-Log10(PValue)`))+
geom_point(aes(color = Regulate))
通过初步绘制,已经将不同调节模式的基因按照不同的颜色进行上色,但是这个颜色实在是难以恭维。我们对其稍作修改……
ggplot(data = Data,aes(x = `log2(FD)`,y = `-Log10(PValue)`))+
geom_point(aes(color = Regulate))+
scale_color_manual(values=c("Down"="#00008B", "Normal"="#808080", "Up"="#DC143C"))
这回颜色好看许多,但是仍旧有些突兀。尤其是文字部分,太小了。
我们继续修改……
ggplot(data = Data,aes(x = `log2(FD)`,y = `-Log10(PValue)`))+
geom_point(aes(color = Regulate))+
scale_color_manual(values=c("Down"="#00008B", "Normal"="#808080", "Up"="#DC143C"))+
theme_bw()+
theme(panel.grid.major = element_blank(),
panel.grid.minor.x = element_blank(),
panel.grid.minor.y = element_blank(),
plot.title = element_text(hjust = 0.5,size = 20),
panel.border = element_blank(),
axis.line = element_line(color = "black"),
axis.text = element_text(hjust = 0.5,size = 15),
axis.title = element_text(hjust = 0.5,size = 15),
legend.text = element_text(size = 14),
legend.title = element_text(size = 20))+
ggtitle("FIGURE")
#theme函数可以设定与图片背景,文字有关的参数
#ggtitle设定图片主标题
这样的文字看上去是足够大了,但是这张图仍然没有给人一种赏心悦目的感觉。这事因为图中的点太过密集,没有层次感。为了提高图片的层次感,这里提供两种方法。
(1)第一种是调节点的透明度,这样基因点聚堆的地方颜色会更深。
ggplot(data = Data,aes(x = `log2(FD)`,y = `-Log10(PValue)`))+
geom_point(aes(color = Regulate),alpha=0.5)+
#通过alpha设定图片元素的透明度
scale_color_manual(values=c("Down"="#00008B", "Normal"="#808080", "Up"="#DC143C"))+
theme_bw()+
theme(panel.grid.major = element_blank(),
panel.grid.minor.x = element_blank(),
panel.grid.minor.y = element_blank(),
plot.title = element_text(hjust = 0.5,size = 20),
panel.border = element_blank(),
axis.line = element_line(color = "black"),
axis.text = element_text(hjust = 0.5,size = 15),
axis.title = element_text(hjust = 0.5,size = 15),
legend.text = element_text(size = 14),
legend.title = element_text(size = 20))+
ggtitle("FIGURE")
(2)第二种方法是更改点的样式,通过降低单个点的面积来淡化图像。
ggplot(data = Data,aes(x = `log2(FD)`,y = `-Log10(PValue)`))+
geom_point(aes(color = Regulate),shape='+')+
#通过shape设定点的形状
scale_color_manual(values=c("Down"="#00008B", "Normal"="#808080", "Up"="#DC143C"))+
theme_bw()+
theme(panel.grid.major = element_blank(),
panel.grid.minor.x = element_blank(),
panel.grid.minor.y = element_blank(),
plot.title = element_text(hjust = 0.5,size = 20),
panel.border = element_blank(),
axis.line = element_line(color = "black"),
axis.text = element_text(hjust = 0.5,size = 15),
axis.title = element_text(hjust = 0.5,size = 15),
legend.text = element_text(size = 14),
legend.title = element_text(size = 20))+
ggtitle("FIGURE")
画完之后再填上几根辅助线
ggplot(data = Data,aes(x = `log2(FD)`,y = `-Log10(PValue)`))+
geom_point(aes(color = Regulate),shape='+')+
geom_vline(xintercept=c(-1,1),lty=3,col="black",lwd=0.5)+
geom_hline(yintercept = 3,lty=3,col="black",lwd=0.5)+
#geom_hline和geom_vline绘制横向和纵向的线条
scale_color_manual(values=c("Down"="#00008B", "Normal"="#808080", "Up"="#DC143C"))+
scale_y_continuous(limits = c(0,16),breaks = c(0,16))+
theme_bw()+
theme(panel.grid.major = element_blank(),
panel.grid.minor.x = element_blank(),
panel.grid.minor.y = element_blank(),
plot.title = element_text(hjust = 0.5,size = 20),
panel.border = element_blank(),
axis.line = element_line(color = "black"),
axis.text = element_text(hjust = 0.5,size = 15),
axis.title = element_text(hjust = 0.5,size = 15),
legend.text = element_text(size = 14),
legend.title = element_text(size = 20))+
ggtitle("FIGURE")
最后对我们的结果图进行简单的加工~
有哪里不懂的小伙伴可以私信或评论,另外本人也提供一些科学图表的有偿绘制服务哦~
价格实惠呢亲!