R數(shù)據(jù)可視化8:金字塔圖和偏差圖

其實圖形的基本組成都很簡單,無非就是點、線、矩形、圓圈等,但是稍作改變就會變成完全不同的圖。就好像PCA圖和火山圖一樣,本質(zhì)都是點圖。今天我們來講一講條形圖的變形。

化妝后“條形圖”

首先來看看幾張不一樣的“條形圖”。

這幾張圖乍一看和我們之前看到的很不一樣,但是仔細(xì)一看其所用的基本元素不就是我們的條形圖嗎?

左邊的和中間的我們稱為偏差圖,右側(cè)的稱為金字塔圖。

可以看到三張圖之間都有一些相同點。那么這三張圖我們可以用于展示什么樣的數(shù)據(jù)呢,舉個例子,比如我們想要展示轉(zhuǎn)錄組數(shù)據(jù)。

那么第一張圖綠色的可以用于展示top10表達(dá)量增高的基因,紅色的可以展示top10表達(dá)量下降的基因,橫坐標(biāo)可以用于展示Foldchange。

第二張圖,比如我們轉(zhuǎn)綠組的數(shù)據(jù)是個時間梯度的數(shù)據(jù),分別檢測了刺激后2個小時、4個小時、8個小時、12個小時的轉(zhuǎn)錄組數(shù)據(jù)。那么我們就可以展示這四個時間點的樣本與對照組變化基因的情況。左側(cè)(暖色部分)可以展示表達(dá)量降低的基因,右側(cè)(冷色部分)可以展示表達(dá)量升高的基因,因此橫坐標(biāo)為基因數(shù)量。而具體的顏色可以展示他們的功能比如GO數(shù)據(jù)庫的功能,也可以用于展示Folachange的倍數(shù),比如紅色為上調(diào)6倍以上的,橘黃色為3倍以上,黃色為2倍以上,那可以看到只有少部分的基因是6倍以上。

那么最后一張圖呢?可以像上述描述的展示多組轉(zhuǎn)錄組數(shù)據(jù)上調(diào)或者下調(diào)。那也可以展示富集聚類的結(jié)果。如某個功能中顯著改變和不改變的基因等。

那么上述的圖應(yīng)該怎么做呢?

怎么做金字塔圖

1)需要什么格式的數(shù)據(jù)

#獲取數(shù)據(jù)
dat <- read.csv("https://raw.githubusercontent.com/selva86/datasets/master/email_campaign_funnel.csv")

觀察一下這個數(shù)據(jù),可以看到Users中為了能夠在x軸正負(fù)半軸分別現(xiàn)實所以Male為負(fù)數(shù),F(xiàn)emale的值為正數(shù)。因此,如果我們想要用自己的數(shù)據(jù)做這類圖,也要注意正負(fù),要對數(shù)據(jù)進(jìn)行適當(dāng)?shù)奶幚?,對其中一部分的?shù)據(jù)取負(fù)。

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

怎么做偏差圖

1)需要什么格式的數(shù)據(jù)

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

往期 R數(shù)據(jù)可視化 分享

R數(shù)據(jù)可視化7: 氣泡圖 Bubble Plot
R數(shù)據(jù)可視化6: 面積圖 Area Chart
R數(shù)據(jù)可視化5: 熱圖 Heatmap
R數(shù)據(jù)可視化4: PCA和PCoA圖
R數(shù)據(jù)可視化3: 直方/條形圖
R數(shù)據(jù)可視化2: 箱形圖 Boxplot
R數(shù)據(jù)可視化1: 火山圖

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容