R语言绘图包系列:
- R语言绘图包01--优秀的拼图包patchwork
- R语言绘图包02--热图pheatmap
- R语言绘图包03--火山图EnhancedVolcano
- R语言绘图包04--GOplot:富集分析结果可视化
- R语言绘图包05--韦恩图的绘制:ggvenn和VennDiagram
- R语言绘图包06--基因表达相关性绘图corrplot
- R语言绘图包07--多集合可视化UpSetR
- R语言绘图包08--森林图的绘制:forestplot
适合于同时展示不同组样本上调和下调基因数
# 加载R包,
library(ggplot2)
library(reshape2)
# 读取双向柱形图演示数据
df= read.delim("https://www.bioladder.cn/shiny/zyp/bioladder2/model/ggplot2/DoublePositionBarPlot/demo.txt")
head(df)
# X Up Down
# 1 Pathway1 35 14
# 2 Pathway2 27 10
# 3 Pathway3 58 93
# 4 Pathway4 24 82
# 5 Pathway5 4 71
# 6 Pathway6 58 79
用自己的数据绘图时,把数据整理成上面df的格式即可。
# 把数据转换成ggplot常用的类型(长数据)
df = melt(df) # melt出自reshape2包
head(df) # 查看转换完成的数据的前几行
# X variable value
# 1 Pathway1 Up 35
# 2 Pathway2 Up 27
# 3 Pathway3 Up 58
# 4 Pathway4 Up 24
# 5 Pathway5 Up 4
# 6 Pathway6 Up 58
# 绘图
df$X <- factor(df$X ,levels = unique(df$X))
ggplot(df, aes(
x = X,
y = ifelse(variable == "Up", value, -value), # 判断分组情况,将两个柱子画在0的两侧
fill = variable)) +
theme_bw()+
geom_bar(stat = 'identity')+ # 画柱形图
coord_flip()+ # x轴与y轴互换位置
geom_text( # 在图形上加上数字标签
aes(label=value, # 标签的值(数据框的第三列)
# vjust = ifelse(variable == "Up", -0.5, 1), # 垂直位置。如果没有coord_flip(),则可以取消这行注释
hjust = ifelse(variable == "Up", -0.4, 1.1) # 水平位置
),
size=2 # 标签大小
)+
scale_y_continuous( # 调整y轴
labels = abs, # 刻度设置为绝对值
expand = expansion(mult = c(0.1, 0.1)))+ # 在y轴的两侧,留下一部分的空白位置,防止加标签的时候,显示不全
scale_x_discrete(limits = rev(levels(df$X)))+ #将x轴倒序,让pathway1在上面
scale_fill_manual(values = c("#F08080","#9370DB"))+ #更改颜色
labs(title="Regulated genes", x="Pathways", y="Number of genes")+ #设置标题和横纵坐标标签
theme(plot.title = element_text(hjust = 0.5)) #标题居中
网友评论