# 代码来源:https://www.r2omics.cn/
# 加载R包,没有安装请先安装 install.packages("包名")
library(ggplot2)
# 读取火山图数据文件
= read.delim("https://www.r2omics.cn/res/demodata/Volcano.txt",
data header = T # 指定第一行是列名
)# 建议您的文件里对应的名称跟demo数据一致,这样不用更改后续代码中的变量名称
= 1.5 # 用来判断上下调,一般蛋白质组的项目卡1.5
FC = 0.05 #用来判断上下调
PValue
# 判断每个基因的上下调,往数据框data里新增了sig列
$sig[(-1*log10(data$PValue) < -1*log10(PValue)|data$PValue=="NA")|(log2(data$FC) < log2(FC))& log2(data$FC) > -log2(FC)] <- "NotSig"
data$sig[-1*log10(data$PValue) >= -1*log10(PValue) & log2(data$FC) >= log2(FC)] <- "Up"
data$sig[-1*log10(data$PValue) >= -1*log10(PValue) & log2(data$FC) <= -log2(FC)] <- "Down"
data
# 绘图
= ggplot(data,aes(log2(FC),-1*log10(PValue))) + # 加载数据,定义横纵坐标
p geom_point(aes(color = sig)) + # 绘制散点图,分组依据是数据框的sig列
labs(title="volcanoplot", # 定义标题,x轴,y轴名称
x="log[2](FC)",
y="-log[10](PValue)") +
scale_color_manual(values = c("#619cff","grey","#f8766d")) + # 自定义颜色,将values更改成你想要的三个颜色
geom_hline(yintercept=-log10(PValue),linetype=2)+ # 在图上添加虚线
geom_vline(xintercept=c(-log2(FC),log2(FC)),linetype=2)+
theme_bw()
p
plotly让你的ggplot动起来
plotly是一个绘制交互式图形的R包。
它的功能十分强大,只需一行代码,就可以为普通的ggplot图形,添加交互性。
废话不多说,直接上代码。
以火山图为例,先附上普通的火山图代码
plotly让ggplot动起来
方法很简单,只需要调用ggplotly函数即可。得到的结果是个交互式的网页。
# 代码来源:https://www.r2omics.cn/
library(plotly)
::ggplotly(p) plotly
附录
如何自定义调整悬浮文字内容
- 在ggplot里添加text描述
- ggplotly(myPlot,tooltip=“text”)
示例:
# 代码来源:https://www.r2omics.cn/
ggplot(data,aes(log2(data$FC),-1*log10(data$PValue),
text = paste0("log[2](FC): ",
log2(data$FC),
"\n",
"-log[10](PValue): ",
-1*log10(data$PValue),
"\n",
as.character(row.names(data))
)))
保存结果
htmltools::save_html()函数可以保存结果。