作为一名自来水用户,翻到了大佬自创R包画火山图,真正实现了一行代码画出火山图。👍👍👍
我花了10分钟学会了如何用,那就再花30分钟写一篇如何用吧。以此向大佬致敬。
一、安装和试用
#install.packages("devtools")
devtools::install_github("BioSenior/ggVolcano")
先直接用
devtools::install_github(“BioSenior/ggVolcano”)
安装试试,如果安装报错或安装不上,把devtools安装上,即运行install.packages(“devtools”)
如果还有问题,那么就需要自行百度根据具体问题具体解决了。
安装成功后,运行
library(ggVolcano)
## basic example code
# load the data
data(deg_data)
# use the function -- add_regulate to add a regulate column
# to the DEG result data.
data <- add_regulate(deg_data, log2FC_name = "log2FoldChange",
fdr_name = "padj",log2FC = 1, fdr = 0.05)
# plot
ggvolcano(data, x = "log2FoldChange", y = "padj",
label = "row", label_number = 10, output = FALSE)
这四步都能运行出来,那么恭喜你距离成功又进了一步。
二、使用细节
写前我不得不多说一句。
其实作为用户,一般报错都是因为细节没注意到位,或者说是,没有按照R包的说明来使用R包
进入正题。
画图前你肯定有这么个数据集。

我这个是csv格式的文件,其实不论有几列,用这个R包画火山图的核心在于有ID列(即基因名),log2FoldChange列和padj列,其他的有没有都不重要。
- 读取数据集
data1 <- read.csv('user_ 4M _vs_ CK .csv')
#txt格式的就用
#data1 <- read.table("all_counts.txt",header = T)
- 用add_regulate()函数添加regulate列,判定基因属于Down,Normal还是Up
data <- add_regulate(data1, log2FC_name = "log2FoldChange",
fdr_name = "padj",log2FC = 1, fdr = 0.05)
这里我觉得只有一个细节值得说,就是log2FC_name和fdr_name这两个引号里的内容是你的原数据里对应的列名。如果一样就照搬代码;如果不一样,比如有些"log2FoldChange",在原数据里写的是”log2FC“,那么这里的代码就是log2FC_name = “log2FC”,或者更推荐的办法是直接进入原数据,把对应列名改成"log2FoldChange"。
- 画图
ggvolcano(data, x = "log2FoldChange", y = "padj",label="ID",
label_number = 0, output = FALSE)
这里的label是根据个人数据的基因列名改的,我的是"ID";
label_number = 0,我设成了0,因为我不需要在火山图里展示基因名,这里的数字个数就是展示的基因名个数。
稍微改动,换个颜色
ggvolcano(data, x = "log2FoldChange", y = "padj",label="ID",
label_number = 0, output = FALSE,
fills = c("#357EBDFF", "#B8B8B8FF", "#D43F3AFF"),
colors = c("#357EBDFF", "#B8B8B8FF", "#D43F3AFF"))
颜色顺序从左到右对应的是Down,Normal和Up.
成图如下:

- 其他细节
换图例位置,用(但是换到哪都是在图内显示)
legend_position #the position of legend. You can choose one from "UL" – Up Left, "UR" – Up Right, "DL" – Down Left, "DR" – Down Right
可以改x或y轴名称,图例名称,点的大小和性状
pointSize size of the point.
pointShape shape of the point.
x_lab label of x-axis.
y_lab label of y-axis.
legend_title title of the legend.
这些都是查看函数的帮助信息看到的,直接运行👇看更多细节调整
?ggvolcano
但是好像无法直接改横纵坐标的尺度,比如x轴,当下是0,5,10。我想改成0,2,4,6,8,10该如何改动呢。
- 遇到过的报错/警告
① 一个报错

Error in data$label[order(data$y)[1:label_number]] <- data$geneName[order(data$y)[1:label_number]] :
replacement has length zero
这里是由于label = “row”,没改成我的列名,label=“ID”
② 一个警告

Warning message:
ggrepel: 9 unlabeled data points (too many overlaps). Consider increasing max.overlaps
这里是由于我的基因名太长,导致展示时有很多重叠,所以有个Warning,我把abel_number 设成0就没有警告了。其实不管也不影响图的输出。
写完了,其实使用还是非常简单的,按照作者的教程来就行。更多高阶用法看原博主
再肝一个R包!一行代码绘制精美火山图!
如果大家还遇到什么报错,欢迎补充和描述最后的解决办法。
最后,致敬大佬,感谢大佬🍻
4万+






