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

2020-01-06 5334动手实验室

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

化妆后“条形图”

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

偏差图_1

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

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

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

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

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

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

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

怎么做金字塔图

1)需要什么格式的数据

获取数据dat <- read.csv("https://raw.githubusercontent.com/selva86/datasets/master/email_campaign_funnel.csv")

偏差图_2

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

2)如何作图

金字塔图

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()

偏差图_3

怎么做偏差图

1)需要什么格式的数据

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()

偏差图_4

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()

偏差图_5

上一篇下一篇