R语言 | 上下双向柱状图

1. 效果图

2. 代码

复制代码
# 生成测试数据
dif=data.frame(
  labels=paste0("pathway", 1:3),
  up=c(30,15,1),
  down=c(10,20,40)
)
rownames(dif)=dif$labels
dif

#变形
dif=reshape2::melt(dif)
dif

# 绘图
ggplot(dif, aes(x=labels, y=ifelse(variable=="up", value, -value), fill=variable ) )+
  geom_bar(stat="identity")+
  geom_text(
    aes(label=value,
        vjust=ifelse(variable=="up", -0.4, 1.1),  #调整上下数字的位置坐标
    ),
    size=4 #number font size
  )+
  scale_fill_manual(name="Change", values = c("#ae3137", "#497aa2"),
                    breaks = c("up", "down"), #原始图例标签
                    labels = c("lengthen", "shorten"), #新图例标签
                    )+
  scale_y_continuous(
    labels=abs, #y轴 显示绝对值
    expand=expansion(mult=c(0.1, 0.1))
  )+
  labs(x="", y="Gene number", title="compare result")+
  theme_classic(base_size = 12)+
  theme(
    axis.text.x = element_text(angle = 60, hjust = 1, size=12),
    axis.text.y = element_text(size=12),
  )

3. todo

相关推荐
郝学胜-神的一滴9 小时前
Python中的Mixin继承:灵活组合功能的强大模式
开发语言·python·程序人生
叫我:松哥9 小时前
基于python强化学习的自主迷宫求解,集成迷宫生成、智能体训练、模型评估等
开发语言·人工智能·python·机器学习·pygame
晚霞的不甘9 小时前
Flutter for OpenHarmony 创意实战:打造一款炫酷的“太空舱”倒计时应用
开发语言·前端·flutter·正则表达式·前端框架·postman
WKP94189 小时前
线程并行控制CompletableFuture
java·开发语言
飞机和胖和黄9 小时前
考研之C语言第二周作业
c语言·开发语言·考研
输出输入9 小时前
MT4 EA 设计一次一单方法
开发语言
一起养小猫9 小时前
OpenHarmony 实战中的 Flutter:深入理解 Widget 核心概念与底层原理
开发语言·flutter
盐真卿9 小时前
python第四部分:模块(每日更新)
开发语言·python
猪八戒1.010 小时前
L C D
开发语言·stm32
wjs202410 小时前
NumPy 创建数组
开发语言