# 代码来源:https://www.r2omics.cn/
# 加载R包,没有安装请先安装 install.packages("包名")
library(tidyverse)
# 读取双向柱形图数据文件
df= read.delim("https://www.r2omics.cn/res/demodata/bar2.txt") # 这里读取了网络上的demo数据,将此处换成你自己电脑里的文件
# 转为为绘图所需要的长数据
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轴的两侧,留下一部分的空白位置,防止加标签的时候,显示不全