# 代码来源:https://www.r2omics.cn/
# 加载R包,没有安装请先安装 install.packages("包名")
library(tidyverse)
# 读取双向柱形图数据文件
= read.delim("https://www.r2omics.cn/res/demodata/bar2.txt") # 这里读取了网络上的demo数据,将此处换成你自己电脑里的文件
df
# 转为为绘图所需要的长数据
= df %>%
df pivot_longer(-1,names_to = "Sample",values_to = "Value")
# 绘图
ggplot(df, aes(
y = factor(X,levels = unique(X)), # 将第一列转化为因子,目的是显示顺序与文件顺序相同,否则按照字母顺序排序
x = ifelse(Sample == "Up", Value, -Value), # 判断分组情况,将两个柱子画在0的两侧
fill = Sample)) +
geom_bar(stat = 'identity')+ # 画柱形图
geom_text( # 在图形上加上数字标签
aes(label=Value, # 标签的值(数据框的第三列)
hjust = ifelse(Sample == "Up", -0.4, 1.1) # 水平位置
),size=2 # 标签大小
+
)labs( # 设置坐标值标签
x="",
y="",
fill=""
+
)theme_bw()+
scale_x_continuous( # 调整y轴
labels = abs, # 刻度设置为绝对值
expand = expansion(mult = c(0.1, 0.1))) # 在y轴的两侧,留下一部分的空白位置,防止加标签的时候,显示不全
R语言如何双向柱形图
什么是双向柱形图?
双向柱状图(又名正负条形图),使用正向和反向的柱子显示类别之间的数值比较。其中分类轴表示需要对比的分类维度,连续轴代表相应的数值。其实就是由两个不同数据系列的柱形图组成的。
例如,在组学数据分析中,双向柱形图可以很直观的看到,上下调蛋白,注释到该通路下的数量。
当然双向柱形图的作用不止如此,下面让我们一起来看看双向柱形图该怎么画吧。
绘图前的数据准备
demo数据可以在https://www.r2omics.cn/res/demodata/bar2.txt下载。
包含3列数据,第一列为每个柱子的名字,第二列为第一个方向上的数值,第三列为第二个方向上的数值。