前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「R」数据可视化9: 金字塔图和偏差图

「R」数据可视化9: 金字塔图和偏差图

作者头像
王诗翔呀
发布2020-07-02 15:42:22
8310
发布2020-07-02 15:42:22
举报
文章被收录于专栏:优雅R优雅R

其实图形的基本组成都很简单,无非就是点、线、矩形、圆圈等,但是稍作改变就会变成完全不同的图。就好像PCA图和火山图一样,本质都是点图。今天我们来讲一讲条形图的变形。

化妆后“条形图”

首先来看看几张不一样的“条形图”。

这几张图乍一看和我们之前看到的很不一样,但是仔细一看其所用的基本元素不就是我们的条形图吗?

左边的和中间的我们称为偏差图,右侧的称为金字塔图。

可以看到三张图之间都有一些相同点。那么这三张图我们可以用于展示什么样的数据呢,举个例子,比如我们想要展示转录组数据。

那么第一张图绿色的可以用于展示top10表达量增高的基因,红色的可以展示top10表达量下降的基因,横坐标可以用于展示Foldchange。

第二张图,比如我们转绿组的数据是个时间梯度的数据,分别检测了刺激后2个小时、4个小时、8个小时、12个小时的转录组数据。那么我们就可以展示这四个时间点的样本与对照组变化基因的情况。左侧(暖色部分)可以展示表达量降低的基因,右侧(冷色部分)可以展示表达量升高的基因,因此横坐标为基因数量。而具体的颜色可以展示他们的功能比如GO数据库的功能,也可以用于展示Folachange的倍数,比如红色为上调6倍以上的,橘黄色为3倍以上,黄色为2倍以上,那可以看到只有少部分的基因是6倍以上。

那么最后一张图呢?可以像上述描述的展示多组转录组数据上调或者下调。那也可以展示富集聚类的结果。如某个功能中显著改变和不改变的基因等。

那么上述的图应该怎么做呢?

怎么做金字塔图

1)需要什么格式的数据

代码语言:javascript
复制
#获取数据
dat <- read.csv("https://raw.githubusercontent.com/selva86/datasets/master/email_campaign_funnel.csv")

观察一下这个数据,可以看到Users中为了能够在x轴正负半轴分别现实所以Male为负数,Female的值为正数。因此,如果我们想要用自己的数据做这类图,也要注意正负,要对数据进行适当的处理,对其中一部分的数据取负。

2)如何作图

金字塔图

代码语言:javascript
复制
library(ggplot2)
library(RColorBrewer)

ggplot(dat,aes(x=Stage,y=Users))+
  geom_bar(stat = "identity",aes(fill=Gender))+
  scale_fill_brewer(palette='Set1')+
  theme_bw()+
  coord_flip()
怎么做偏差图

1)需要什么格式的数据

代码语言:javascript
复制
dat$Group<-paste(dat$Stage,dat$Gender,sep="_")
dat<-arrange(dat,dat$Gender,dat$Stage)#先按Gender排列再按Stage排列
dat$Group<-factor(dat$Group,levels=rev(unique(dat$Group)))
labelname<-rep(rev(unique(dat$Stage)),2)

ggplot(dat,aes(x=Group,y=Users))+
  geom_bar(stat = "identity",aes(fill=Gender))+
  scale_fill_brewer(palette='Set1')+
  scale_x_discrete(labels = labelname)+
  theme_bw()+
  xlab("")+
  coord_flip()
代码语言:javascript
复制
color_palette<-colorRampPalette(brewer.pal(8,"Paired"))(18)
ggplot(dat,aes(x=Gender,y=Users))+
  geom_bar(stat = "identity",aes(fill=Stage))+
  scale_fill_manual(values=color_palette)+
  theme_bw()+
  theme(
    legend.position = c("bottom"),
    legend.margin = margin(1,0,1,0)
  )+
  xlab("")+
  coord_flip()

本文作者蒋刘一琦,自嘲是一个有艺术追求的生信狗,毕业于浙江大学生物信息学专业,目前在复旦大学就读研究生,研究方向为宏基因组。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 优雅R 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 化妆后“条形图”
  • 怎么做金字塔图
  • 怎么做偏差图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档