R語言數據可視化tidyr與ggplot2多個變量分層展示舉例實現
在R語言普通的繪圖中,使用par()
參數可以在一張圖上實現不同變量的子圖。如果我們想要用ggplot2
實現,則需要整理我們的原始數據,這通常是非常麻煩的,這時就需要用到我們的tidyr
來幫助我們繪圖。
可能說上面一段話不是很容易理解,下面我們來舉個栗子。
每個變量的密度分佈情況
y1 <- rnorm(20) y2 <- rnorm(20) dat <- data.frame(y1, y2)
現有的數據集:
y1 y2 1 -0.12781723 -2.39376880 2 0.50074083 0.72555237 3 -0.02419456 0.94721701 4 -0.26366759 -0.60006759 5 1.13042618 -0.07591046 6 0.04313160 1.18677742 7 0.01180343 0.17627700 8 0.15208821 -0.12472391 9 -0.72690758 -1.92233170 10 1.04903577 -0.66208974 11 0.89689082 0.16331929 12 0.28471495 2.00629127 13 -0.26956768 -0.11897779 14 -0.81699454 -1.05575302 15 -0.65923768 1.20971004 16 0.18237270 1.55745467 17 -0.52359358 -0.74253496 18 1.36949647 1.07759474 19 -0.39882438 0.83915414 20 0.92084949 -1.04859906
目標繪圖:
思考
我們要如何利用ggplot
達到上圖的效果?
需要用數據集,將y1與y2分別整理到一個新的變量上,叫做var
;
裡面所有的值也變成一個新的變量,叫做value
;
如果隻有兩個變量整理起來還比較簡單,但如果變量一旦增多,整理起來相對就較為繁瑣。所以這裡推薦使用tidyr
包來進行整理。
其用起來也非常簡單。
tidyr
使用如下代碼,我們就可以整理成想要的結果:
dat %>% gather(y1, y2, key = "var", value = "value")
解釋一下上述代碼的含義:y1, y2
表示原本數據中的變量;key = "var"
表示轉換之後,變量所在的那一列的名稱為var;value = "value"
表示轉換之後,原本的值所在的那一列的名稱為value
輸出結果如下:
var value 1 y1 -0.12781723 2 y1 0.50074083 3 y1 -0.02419456 4 y1 -0.26366759 5 y1 1.13042618 6 y1 0.04313160 7 y1 0.01180343 8 y1 0.15208821 9 y1 -0.72690758 10 y1 1.04903577 11 y1 0.89689082 12 y1 0.28471495 13 y1 -0.26956768 14 y1 -0.81699454 15 y1 -0.65923768 16 y1 0.18237270 17 y1 -0.52359358 18 y1 1.36949647 19 y1 -0.39882438 20 y1 0.92084949 21 y2 -2.39376880 22 y2 0.72555237 23 y2 0.94721701 24 y2 -0.60006759 25 y2 -0.07591046 26 y2 1.18677742 27 y2 0.17627700 28 y2 -0.12472391 29 y2 -1.92233170 30 y2 -0.66208974 31 y2 0.16331929 32 y2 2.00629127 33 y2 -0.11897779 34 y2 -1.05575302 35 y2 1.20971004 36 y2 1.55745467 37 y2 -0.74253496 38 y2 1.07759474 39 y2 0.83915414 40 y2 -1.04859906
用瞭上述結果,就可以非常簡單地使用ggplot2進行畫圖瞭。
ggplot2進行繪圖
我們可以直接使用管道數據的處理方式進行繪圖,簡便快捷:
dat %>% gather(y1, y2, key = "var", value = "value") %>% ggplot(aes(x = value)) + geom_histogram(aes(fill = factor(var), y = ..density..), alpha = 0.3, colour = 'black') + stat_density(geom = 'line', position = 'identity', size = 1.5, aes(colour = factor(var))) + facet_wrap(~ var, ncol = 2) + labs(y = '直方圖與密度曲線', x = '值', title = '標題', fill = '變量') + theme(plot.title = element_text(hjust = 0.5)) + guides(color = FALSE)
這裡基本都是前面的博客:R語言學習ggplot2繪制統計圖形包全面詳解 裡面有提及到。
隻有一個就是guides(color = FALSE)
,表示隱藏線顏色的圖例,因為線的顏色我們是用color =
來指定的。同理如果要隱藏柱狀圖顏色的圖例則使用 guides(fill = FALSE)
即可。
最終就可以得到我們的目標繪圖瞭!
以上就是R語言可視化tidyr與ggplot2多個變量分層展示舉例實現的詳細內容,更多關於R語言可視化tidyr與ggplot2多個變量分層的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- R語言學習ggplot2繪制統計圖形包全面詳解
- R語言數據可視化ggplot繪制置信區間與分組繪圖技巧
- R語言數據可視化ggplot添加左右y軸繪制天貓雙十一銷售圖
- R語言繪制頻率直方圖的案例
- R語言使用ggplot繪制畫中畫細節放大的方法