zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

R绘图|转录组上游分析结果可视化-双向柱状图

2023-03-07 09:46:46 时间

整理毕业论文数据的时候,想将RNA-seq上游的一些分析结果可视化,主要是比对和定量的结果,通过图表展示反而没有那么直观,经过一番摸索,最后画出了下面的图。

如有问题,请多多指教!

这是一页PPT

准备数据

我的数据是4个不同处理,分别为HNa、HTa、THa、TNa,每个处理3个重复,想要同时展示Mapped和Assigned率。

数据已修改

首先我们先给数据加上分组信息,便于后续作图。

把数据放到放到txt中(其他格式文件也可以,看个人习惯),去掉百分号并保存为maprate.txt。

作图

1 读入数据并处理

maprate <- read.csv('maprate.txt',header = T,sep = "") # 数据读取
maprate$Assigned=maprate$Assigned*-1 # 将Assigned变成负值
library(reshape2)
longdata <- melt(maprate) # 宽数据转长数据

2 作图

library(ggplot2)
ggplot(longdata, aes(SampleName, value, fill = Group)) +
  geom_col(position = position_dodge(width = 0.5), 
           width = 0.5, size = 0.3, colour = 'black') + # 柱形图绘制
  theme_classic()+ # 主题设置

这个图实在是太丑了有没有!

3 美化

我们来加亿点点细节。

library(ggplot2)
library(ggsci)
library(ggbreak)
ggplot(longdata, aes(SampleName, value, fill = Group)) +
  geom_col(position = position_dodge(width = 0.5), 
           width = 0.5, size = 0.3, colour = 'black') + # 柱形图绘制
  theme_classic()+ # 主题设置
  scale_fill_npg()+ # 颜色设置
  labs(x = 'Sample Name', y = 'Rate(%)') + #设置坐标轴标签
  scale_y_break(c(-70, 95), scales = 1.5) + # 坐标轴截断
  theme(axis.text = element_text(size = 12)) + # 修改字体大小
  theme(axis.title = element_text(size = 14))+
  annotate('text',label = 'Mapped', 2, 96,size=6) + # 修改标签位置和大小
  annotate('text',label = 'Assigned', 2, -79,size=6)+
  scale_y_continuous(breaks = seq(-90, 100, 1), 
                     labels = as.character(abs(seq(-90, 100, 1))), 
                     limits = c(-89, 98)) # 截断的数值显示

现在已经好很多了,不过还是不够好看,不妨通过eoffice将图导入到PPT进行微调。

topptx(filename = "test.pptx",width = 8,height = 6)

在工作目录中找到test.pptx,取消图形的组合。

我对其进行以下操作

  1. 去掉右侧多余的坐标轴
  2. 调整左侧Y轴点的个数
  3. 添加截断标志和0线
  4. 调整字体为Times New Roman,颜色为黑色,部分加粗
  5. 加红框突出
  6. 其他微调

最终图如下:

参考资料:

  1. 《R 中的 scale_y_continuous 函数》https://www.delftstack.com/zh/howto/r/scale_y_continuous-in-r/
  2. 《ggbreak:你们要的坐标轴截断,它来了》https://mp.weixin.qq.com/s/l98Pfk4xPykWWuIJs7katw
  3. 《R语言绘制双向柱状图示例》https://mp.weixin.qq.com/s/trx2tKt-EV4n7W2xs20lAg