R數據可視化8:金字塔圖和偏差圖

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

化妝后“條形圖”

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

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

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

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

那么第一張圖綠色的可以用于展示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")

觀察一下這個數據,可以看到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()

怎么做偏差圖

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()
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數據可視化 分享

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。