R语言如何绘制双向柱形图(12)

1.什么是双向柱形图?

双向柱状图(又名正负条形图),使用正向和反向的柱子显示类别之间的数值比较。其中分类轴表示需要对比的分类维度,连续轴代表相应的数值。其实就是由两个不同数据系列的柱形图组成的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fn5Q1nqB-1652084501953)(D:\gitee\bioladder2\文档\知乎\双向柱形图.assets\image-20211214165057416.png)]

在组学数据分析中,双向柱形图,可以很直观的看到,上下调蛋白,注释到该通路下的数量。

当然双向柱形图的作用不止如此,下面让我们一起来看看双向柱形图该怎么画吧。

2.绘图前的数据准备

​ demo数据可以在https://www.bioladder.cn/shiny/zyp/bioladder2/model/ggplot2/DoublePositionBarPlot/demo.txt下载。

包含3列数据,第一列为每个柱子的名字,第二列为第一个方向上的数值,第三列为第二个方向上的数值。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PlXxeLiI-1652084501954)(D:\gitee\bioladder2\文档\知乎\双向柱形图.assets\image-20211214163255129.png)]

3. R语言怎么画双向柱形图

# 加载R包,没有安装请先安装  install.packages("包名") 
library(ggplot2)
library(reshape2)

# 读取双向柱形图数据文件
df= read.delim("https://www.bioladder.cn/shiny/zyp/bioladder2/model/ggplot2/DoublePositionBarPlot/demo.txt")   # 这里读取了网络上的demo数据,将此处换成你自己电脑里的文件


# 把数据转换成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

# 绘图
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轴的两侧,留下一部分的空白位置,防止加标签的时候,显示不全



4. BioLadder生信云平台在线绘制双向柱形图

不想写代码?可以用BioLadder生信云平台在线绘制双向柱形图。

网址:https://www.bioladder.cn/web/#/chart/70

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fceDEeIH-1652084501955)(D:\gitee\bioladder2\文档\知乎\双向柱形图.assets\image-20211214163543071.png)]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值