R语言数据可视化_科学统计图表1——火山图

**

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")

在这里插入图片描述
最后对我们的结果图进行简单的加工~
在这里插入图片描述


有哪里不懂的小伙伴可以私信或评论,另外本人也提供一些科学图表的有偿绘制服务哦~
价格实惠呢亲!
在这里插入图片描述


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值