其實圖形的基本組成都很簡單,無非就是點、線、矩形、圓圈等,但是稍作改變就會變成完全不同的圖。就好像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: 火山圖