33 双向柱形图
33.1 什么是双向柱形图?
双向柱状图(又名正负条形图),使用正向和反向的柱子显示类别之间的数值比较。其中分类轴表示需要对比的分类维度,连续轴代表相应的数值。其实就是由两个不同数据系列的柱形图组成的。
在组学数据分析中,双向柱形图可以很直观的看到,上下调蛋白,注释到该通路下的数量。
当然双向柱形图的作用不止如此,下面让我们一起来看看双向柱形图该怎么画吧。
33.2 绘图前的数据准备
demo数据可以在https://www.bioladder.cn/shiny/zyp/bioladder2/model/ggplot2/DoublePositionBarPlot/demo.txt下载。
包含3列数据,第一列为每个柱子的名字,第二列为第一个方向上的数值,第三列为第二个方向上的数值。
33.3 R语言怎么画双向柱形图
# 加载R包,没有安装请先安装 install.packages("包名")
library(ggplot2)
library(reshape2)
# 读取双向柱形图数据文件
= read.delim("https://www.bioladder.cn/shiny/zyp/bioladder2/model/ggplot2/DoublePositionBarPlot/demo.txt") # 这里读取了网络上的demo数据,将此处换成你自己电脑里的文件
df
# 把数据转换成ggplot常用的类型(长数据)
= melt(df) # melt出自reshape2包
df 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
# 绘图
ggplot(df, aes(
x = factor(X,levels = unique(X)), # 将第一列转化为因子,目的是显示顺序与文件顺序相同,否则按照字母顺序排序
y = ifelse(variable == "Up", value, -value), # 判断分组情况,将两个柱子画在0的两侧
fill = variable)) +
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轴的两侧,留下一部分的空白位置,防止加标签的时候,显示不全
33.4 BioLadder生信云平台在线绘制双向柱形图
不想写代码?可以用BioLadder生信云平台在线绘制双向柱形图。
网址:
双向柱形图-BioLadder生物信息在线分析可视化平台www.bioladder.cn/web/#/chart/70