學(xué)習(xí)tidyverse - 數(shù)據(jù)可視化(1)

我學(xué)習(xí)的主要是這本書R for Data Science.


上圖是我們處理數(shù)據(jù)的流程

  • 導(dǎo)入:首先结澄,必須將數(shù)據(jù)導(dǎo)入R泽本。

  • 整理:導(dǎo)入數(shù)據(jù)后,需要整理一下冲秽,整理數(shù)據(jù)意味著以統(tǒng)一整齊的形式存儲數(shù)據(jù),我稱它為齊整數(shù)據(jù)颠通。

  • 轉(zhuǎn)換:整理完數(shù)據(jù)后猪瞬,通常第一步是對其進行轉(zhuǎn)換。轉(zhuǎn)換包括縮小觀測范圍(提取)(例如一個城市中的所有人或去年的所有數(shù)據(jù))富岳,創(chuàng)建現(xiàn)有變量的函數(shù)的新變量(例如根據(jù)距離和時間來計算速度)以及計算一組統(tǒng)計信息(如計數(shù)或均值)蛔糯。

  • 描述:一旦有了需要的變量的齊整數(shù)據(jù),就可以使用兩個主要的方式來描述它:可視化和建模窖式。
    (1) 良好的可視化效果會反映出在輸入時的錯誤或者對數(shù)據(jù)提出新的問題蚁飒,或者反映出需要收集其他數(shù)據(jù)。
    (2) 模型是可視化的補充工具萝喘。一旦問題變得足夠精確淮逻,就可以使用模型來描述回答琼懊。

  • 交流:數(shù)據(jù)統(tǒng)計科學(xué)的最后一步是交流(沒理解)。
    我們首先從數(shù)據(jù)可視化開始學(xué)習(xí)爬早,先了解我們最后能得到一個什么樣fancy的結(jié)果肩碟,這里主要用到了ggplot2包。

1. Prerequisites

install.packages("tidyverse")
library(tidyverse)

我們使用ggplot2中的mpg數(shù)據(jù)框進行分析測試凸椿。 數(shù)據(jù)框是變量(列)和觀察值(行)的矩陣集合。 mpg包含美國環(huán)境保護署收集的有關(guān)38輛汽車的觀察結(jié)果翅溺。

mpg
#> # A tibble: 234 x 11
#>   manufacturer model displ  year   cyl trans      drv     cty   hwy fl    class 
#>   <chr>        <chr> <dbl> <int> <int> <chr>      <chr> <int> <int> <chr> <chr> 
#> 1 audi         a4      1.8  1999     4 auto(l5)   f        18    29 p     compa…
#> 2 audi         a4      1.8  1999     4 manual(m5) f        21    29 p     compa…
#> 3 audi         a4      2    2008     4 manual(m6) f        20    31 p     compa…
#> 4 audi         a4      2    2008     4 auto(av)   f        21    30 p     compa…
#> 5 audi         a4      2.8  1999     6 auto(l5)   f        16    26 p     compa…
#> 6 audi         a4      2.8  1999     6 manual(m5) f        18    26 p     compa…
#> # … with 228 more rows

displ: 表示汽車引擎大心月(以升為單位)。
hwy: 高速公路上的汽車燃油效率咙崎,以英里/加侖(mpg)為單位优幸。 當(dāng)相同距離行駛時,低燃油效率的汽車比高燃油效率的汽車消耗更多的燃油褪猛。

2. Creating a ggplot

ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy))

該圖顯示了發(fā)動機尺寸(排量)和燃油效率(高速)之間的負相關(guān)關(guān)系网杆。
ggplot()的第一個參數(shù)是要在圖形中使用的數(shù)據(jù)集。因此ggplot(data = mpg)創(chuàng)建了一個空圖伊滋,然后通過向ggplot()添加一層或多層來完成圖形碳却。
函數(shù)geom_point()在繪圖上添加了一層點,從而創(chuàng)建了一個散點圖笑旺。
ggplot2附帶了許多geom函數(shù)昼浦,每個函數(shù)都會在繪圖中添加不同類型的圖層。ggplot2中的每個geom函數(shù)都帶有一個映射參數(shù)筒主。這定義了數(shù)據(jù)集中的變量如何映射到視覺屬性关噪。映射參數(shù)始終與aes()配對,而aes()的x和y參數(shù)指定要映射到x和y軸的變量乌妙。

3. Aesthetic mappings

ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy, color = class))

在上面的示例中使兔,我們將點的類別映射到顏色,我們也可以以相同的方式將類別映射到尺寸藤韵。

ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy, size = class))
#> Warning: Using size for a discrete variable is not advised.

我們也可以將類映射到控制點的透明度的alpha虐沥,或控制點的形狀。

# Up
ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy, alpha = class))

# Down
ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy, shape = class))
Up

Down

ggplot2一次只能使用六個形狀荠察。對于每種映射置蜀,都可以使用aes()將映射名稱與要顯示的變量相關(guān)聯(lián)。

還可以手動設(shè)置幾何圖形的映射屬性悉盆。例如盯荤,我們可以將圖中的所有點設(shè)為藍色:

ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy), color = "blue")

要手動設(shè)置映射,需按名稱將映射設(shè)置為geom函數(shù)的參數(shù)焕盟, 需要選擇一種適合該美學(xué)的水平:

  • 顏色的名稱秋秤,為字符串宏粤。
  • 點的大小,以毫米為單位灼卢。
  • 點的形狀為數(shù)字绍哎,如圖所示。

4. Facets

ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy)) + 
  facet_wrap(~ class, nrow = 2)
ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy)) + 
  facet_grid(drv ~ cyl)

5. Geometric objects

# Up
ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy))

# Down
ggplot(data = mpg) + 
  geom_smooth(mapping = aes(x = displ, y = hwy))
Up

Down

ggplot2中的每個geom函數(shù)都帶有一個映射參數(shù)鞋真。 可以設(shè)置點的形狀崇堰,或者可以設(shè)置線的線型。 例如:geom_smooth()將為映射到線型的變量的每個唯一值繪制一條不同的線涩咖,并使用不同的線型海诲。

ggplot(data = mpg) + 
  geom_smooth(mapping = aes(x = displ, y = hwy, linetype = drv))


許多幾何圖形(例如geom_smooth())都使用單個幾何對象顯示多行數(shù)據(jù)。ggplot2將為分組group變量的每個唯一值繪制一個單獨的對象檩互。

ggplot(data = mpg) +
  geom_smooth(mapping = aes(x = displ, y = hwy))
              
ggplot(data = mpg) +
  geom_smooth(mapping = aes(x = displ, y = hwy, group = drv))
    
ggplot(data = mpg) +
  geom_smooth(
    mapping = aes(x = displ, y = hwy, color = drv),
    show.legend = FALSE
  )



要在同一圖中顯示多個幾何特幔,可以將多個幾何函數(shù)添加到ggplot()中:

ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy)) +
  geom_smooth(mapping = aes(x = displ, y = hwy))

如果將映射放置在geom函數(shù)中,則ggplot2會將其視為該圖層的局部映射闸昨。 它將僅使用這些映射來擴展或覆蓋該層的全局映射蚯斯。 這可以實現(xiàn)在不同的圖層顯示不同的映射。

ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + 
  geom_point(mapping = aes(color = class)) + 
  geom_smooth()

可以使用相同的想法為每個圖層指定不同的數(shù)據(jù)饵较。 在這里拍嵌,我們的平滑線僅顯示mpg數(shù)據(jù)集的一個子集,即小型汽車循诉。 geom_smooth()中的局部數(shù)據(jù)參數(shù)僅覆蓋該層的ggplot()中的全局數(shù)據(jù)參數(shù)撰茎。

ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) + 
  geom_point(mapping = aes(color = class)) + 
  geom_smooth(data = filter(mpg, class == "subcompact"), se = FALSE)

參考:https://r4ds.had.co.nz/introduction.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市打洼,隨后出現(xiàn)的幾起案子龄糊,更是在濱河造成了極大的恐慌,老刑警劉巖募疮,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炫惩,死亡現(xiàn)場離奇詭異,居然都是意外死亡阿浓,警方通過查閱死者的電腦和手機他嚷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芭毙,“玉大人筋蓖,你說我怎么就攤上這事⊥硕兀” “怎么了粘咖?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長侈百。 經(jīng)常有香客問我瓮下,道長翰铡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任讽坏,我火速辦了婚禮锭魔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘路呜。我一直安慰自己迷捧,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布胀葱。 她就那樣靜靜地躺著党涕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪巡社。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天手趣,我揣著相機與錄音晌该,去河邊找鬼。 笑死绿渣,一個胖子當(dāng)著我的面吹牛朝群,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播中符,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼姜胖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了淀散?” 一聲冷哼從身側(cè)響起右莱,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎档插,沒想到半個月后慢蜓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡郭膛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年晨抡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片则剃。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡耘柱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出棍现,到底是詐尸還是另有隱情调煎,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布己肮,位于F島的核電站汛蝙,受9級特大地震影響烈涮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜窖剑,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一坚洽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧西土,春花似錦讶舰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至肋乍,卻和暖如春鹅颊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背墓造。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工堪伍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人觅闽。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓帝雇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蛉拙。 傳聞我的和親對象是個殘疾皇子尸闸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容