R語(yǔ)言數(shù)據(jù)可視化tidyr與ggplot2多個(gè)變量分層展示舉例實(shí)現(xiàn)
在R語(yǔ)言普通的繪圖中,使用par()參數(shù)可以在一張圖上實(shí)現(xiàn)不同變量的子圖。如果我們想要用ggplot2實(shí)現(xiàn),則需要整理我們的原始數(shù)據(jù),這通常是非常麻煩的,這時(shí)就需要用到我們的tidyr來(lái)幫助我們繪圖。
可能說(shuō)上面一段話不是很容易理解,下面我們來(lái)舉個(gè)栗子。
每個(gè)變量的密度分布情況
y1 <- rnorm(20) y2 <- rnorm(20) dat <- data.frame(y1, y2)
現(xiàn)有的數(shù)據(jù)集:
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
目標(biāo)繪圖:

思考
我們要如何利用ggplot達(dá)到上圖的效果?
需要用數(shù)據(jù)集,將y1與y2分別整理到一個(gè)新的變量上,叫做var;
里面所有的值也變成一個(gè)新的變量,叫做value;
如果只有兩個(gè)變量整理起來(lái)還比較簡(jiǎn)單,但如果變量一旦增多,整理起來(lái)相對(duì)就較為繁瑣。所以這里推薦使用tidyr包來(lái)進(jìn)行整理。
其用起來(lái)也非常簡(jiǎn)單。
tidyr
使用如下代碼,我們就可以整理成想要的結(jié)果:
dat %>% gather(y1, y2, key = "var", value = "value")
解釋一下上述代碼的含義:y1, y2表示原本數(shù)據(jù)中的變量;key = "var" 表示轉(zhuǎn)換之后,變量所在的那一列的名稱為var;value = "value"表示轉(zhuǎn)換之后,原本的值所在的那一列的名稱為value
輸出結(jié)果如下:
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
用了上述結(jié)果,就可以非常簡(jiǎn)單地使用ggplot2進(jìn)行畫圖了。
ggplot2進(jìn)行繪圖
我們可以直接使用管道數(shù)據(jù)的處理方式進(jìn)行繪圖,簡(jiǎn)便快捷:
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 = '標(biāo)題', fill = '變量') +
theme(plot.title = element_text(hjust = 0.5)) +
guides(color = FALSE)
這里基本都是前面的博客:R語(yǔ)言學(xué)習(xí)ggplot2繪制統(tǒng)計(jì)圖形包全面詳解 里面有提及到。
只有一個(gè)就是guides(color = FALSE),表示隱藏線顏色的圖例,因?yàn)榫€的顏色我們是用color =來(lái)指定的。同理如果要隱藏柱狀圖顏色的圖例則使用 guides(fill = FALSE)即可。
最終就可以得到我們的目標(biāo)繪圖了!

以上就是R語(yǔ)言可視化tidyr與ggplot2多個(gè)變量分層展示舉例實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于R語(yǔ)言可視化tidyr與ggplot2多個(gè)變量分層的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
R語(yǔ)言與格式,日期格式,格式轉(zhuǎn)化的操作
這篇文章主要介紹了R語(yǔ)言與格式,日期格式,格式轉(zhuǎn)化的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
R語(yǔ)言繪圖數(shù)據(jù)可視化pie?chart餅圖
這篇文章主要介紹了R語(yǔ)言繪圖數(shù)據(jù)可視化pie?chart餅圖,教大家如何用R語(yǔ)言來(lái)畫大餅,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02
R語(yǔ)言數(shù)據(jù)框的合并實(shí)現(xiàn)示例
有時(shí)數(shù)據(jù)集來(lái)自多個(gè)地方,我們需要將兩個(gè)或多個(gè)數(shù)據(jù)集合并成一個(gè)數(shù)據(jù)集,本文主要介紹了R語(yǔ)言數(shù)據(jù)框的合并實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
R語(yǔ)言實(shí)現(xiàn)操作MySQL數(shù)據(jù)庫(kù)
這篇文章主要介紹了R語(yǔ)言實(shí)現(xiàn)操作MySQL數(shù)據(jù)庫(kù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
R語(yǔ)言實(shí)現(xiàn)隨機(jī)森林的方法示例
本文詳細(xì)的介紹了隨機(jī)森林的算法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08

