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

本文详细介绍如何使用R语言的ggplot2包绘制火山图,包括数据格式要求、绘图代码示例及如何调整颜色、透明度和点样式,以提升图表的视觉效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**

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

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


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


### 关于RNA-seq数据可视化的工具和方法 #### scRNAtoolVis R包用于单细胞RNA-seq数据可视化 scRNAtoolVis是一个专门为单细胞RNA测序(scRNA-seq)数据设计的R包,能够帮助研究人员轻松创建既美观又富含信息量的可视化表。此工具适合不同层次的研究人员使用,无论是新手还是资深生物信息学专家都可以从中受益,实现更直观高效的单细胞数据分析[^1]。 ```r library(scRNAtoolVis) # 假设已有表达矩阵data_matrix以及元数据metadata # 创建Seurat对象并进行预处理... sctv <- CreateSCTVObject(data.matrix, metadata=metadata) # 进行质量控制、标准化等操作... # 绘制t-SNE展示样本间关系 DimPlot(sctv, reduction="tsne", group.by="celltype") ``` #### 面向批量RNA-seq数据的风险特征构建平台 存在一种无需编写任何代码即可重现研究过程的方法,该方案专注于基于单细胞及大批量RNA-seq数据集建立成纤维细胞(CAF)特性相关的风险预测模型。通过这个在线资源可以获取有关如何从原始读取文件到最终统计评估整个工作流的信息[^2]。 #### RNA-seq肿瘤免疫分析流程(RIMA) 由杨柳等人编写的《RNA-seq肿瘤免疫力评价指南》提供了详细的指导说明,涵盖了从实验设计阶段直至获得结论期间所需执行的各项任务。这份文档特别强调了针对癌症样本特有的挑战及其解决方案,并介绍了几种常见类型的形表示法,比如火山与热的应用场景[^3]。 #### 实践中的具体技巧——准备数据与解读成果 为了更好地理解所得出的结果,在实际应用过程中还需要掌握一些额外的知识点。这包括但不限于学会整理待绘的数据结构;熟悉各类表背后的意义所在;知道何时选用何种形式最能体现所要传达的关键发现等等。例如绘制火山可以帮助识别差异表达基因(DEGs),而热则可用于聚类样品间的相似程度比较[^4]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值