日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《R数据科学》学习笔记|Note2:使用ggplot2进行数据可视化(上)

發布時間:2023/12/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《R数据科学》学习笔记|Note2:使用ggplot2进行数据可视化(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊藍字

關注我!

寫在前面

本系列為《R數據科學》(R for Data Science)的學習筆記。相較于其他R語言教程來說,本書一個很大的優勢就是直接從實用的R包出發,來熟悉R及數據科學。更新過程中,讀者朋友如發現錯誤,歡迎指正。如果有疑問,也可以在評論區留言或后臺私信。希望各位讀者朋友能學有所得!

BOOK

1.1

簡介

本章將教你如何使用 ggplot2 進行數據可視化。R 有好幾種繪圖工具,但 ggplot2 是其中最優雅、功能最全面的一個。ggplot2 實現了圖形語法,這是一套用來描述和構建圖形的連貫性語法規則。掌握 ggplot2 后,你便可以在多個場景中使用,從而顯著提高工作效率。

準備工作

本章重點討論 tidyverse 的一個核心 R 包——ggplot2。為了訪問本章用到的數據集、幫助頁面和函數,需要先運行以下代碼來加載 tidyverse:

1library(tidyverse) 1>?library(tidyverse)2--?Attaching?packages?-----------------------------------------------------?tidyverse?1.3.0?--3√?ggplot2?3.3.3?????√?purrr???0.3.44√?tibble??3.0.4?????√?dplyr???1.0.25√?tidyr???1.1.2?????√?stringr?1.4.06√?readr???1.4.0?????√?forcats?0.5.07--?Conflicts?--------------------------------------------------------?tidyverse_conflicts()?--8x?dplyr::filter()?masks?stats::filter()9x?dplyr::lag()????masks?stats::lag() 10Warning?messages: 111:?程輯包‘tidyverse’是用R版本4.0.3?來建造的? 122:?程輯包‘tibble’是用R版本4.0.3?來建造的? 133:?程輯包‘tidyr’是用R版本4.0.3?來建造的? 144:?程輯包‘readr’是用R版本4.0.3?來建造的? 155:?程輯包‘dplyr’是用R版本4.0.3?來建造的? 166:?程輯包‘forcats’是用R版本4.0.3?來建造的

1.2

第一步

我們使用第一張圖來回答問題:大引擎汽車比小引擎汽車更耗油嗎?

1.2.1

mpg數據框

可以使用ggplot2 包中的mpg 數據框(即 ggplot2::mpg)來檢驗自己的答案。數據框是變量(列)和觀測(行)的矩形集合。mpg 包含了由美國環境保護協會收集的 38 種車型的觀測數據。

1mpg2>?mpg3#?A?tibble:?234?x?114???manufacturer?model??????displ??year???cyl?trans??????drv?????cty???hwy?fl????class??5???<chr>????????<chr>??????<dbl>?<int>?<int>?<chr>??????<chr>?<int>?<int>?<chr>?<chr>??6?1?audi?????????a4???????????1.8??1999?????4?auto(l5)???f????????18????29?p?????compact7?2?audi?????????a4???????????1.8??1999?????4?manual(m5)?f????????21????29?p?????compact8?3?audi?????????a4???????????2????2008?????4?manual(m6)?f????????20????31?p?????compact9?4?audi?????????a4???????????2????2008?????4?auto(av)???f????????21????30?p?????compact 10?5?audi?????????a4???????????2.8??1999?????6?auto(l5)???f????????16????26?p?????compact 11?6?audi?????????a4???????????2.8??1999?????6?manual(m5)?f????????18????26?p?????compact 12?7?audi?????????a4???????????3.1??2008?????6?auto(av)???f????????18????27?p?????compact 13?8?audi?????????a4?quattro???1.8??1999?????4?manual(m5)?4????????18????26?p?????compact 14?9?audi?????????a4?quattro???1.8??1999?????4?auto(l5)???4????????16????25?p?????compact 1510?audi?????????a4?quattro???2????2008?????4?manual(m6)?4????????20????28?p?????compact 16#?...?with?224?more?rows

mpg 中包括如下變量。

? displ:引擎大小,單位為升。

? hwy:汽車在高速公路上行駛時的燃油效率,單位為英里 / 加侖(mpg)。與燃油效率高的汽車相比,燃油效率低的汽車在行駛相同距離時要消耗更多燃油。

1.2.2

創建ggplot圖形

為了繪制 mpg 的圖形,運行以下代碼將 displ 放在 x 軸,hwy 放在 y 軸:

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

上圖顯示出引擎大小(displ)和燃油效率(hwy)之間是負相關關系。換句話說,大引擎汽車更耗油。

ggplot2 中,你可以使用 ggplot() 函數開始繪圖。

ggplot() 創建了一個坐標系,你可以在它上面添加圖層。ggplot() 的第一個參數是要在圖中使用的數據集。

ggplot(data = mpg)會創建一張空白圖,因為這張圖沒什么意思,所以就不在這里展示了。向 ggplot() 中添加一個或多個圖層就可以完成這張圖。

函數 geom_point() 向圖中添加一個點層,這樣就可以創建一張散點圖。

ggplot2 中包含了多種幾何對象函數,每種函數都可以向圖中添加不同類型的圖層。你將在本章中學到大量的幾何對象函數。

ggplot2 中的每個幾何對象函數都有一個 mapping 參數。這個參數定義了如何將數據集中的變量映射為圖形屬性。mapping 參數總是與 aes() 函數成對出現,aes() 函數的 x 參數和 y參數分別指定了映射到 x 軸的變量與映射到 y 軸的變量。ggplot2 在 data 參數中尋找映射變量,本例中就是 mpg。

1.2.3

繪圖模板

我們將上面的代碼轉換為一個可重用的 ggplot2 繪圖模板。要想生成一張圖,將以下代碼中的尖括號部分替換為數據集、幾何對象函數或映射集合即可:

1ggplot(data?=?<DATA>)?+ 2??<GEOM_FUNCTION>(mapping?=?aes(<MAPPINGS>))

本章其余內容將向你展示如何完成并擴展這個模板,以制作出各種類型的圖。我們將從<MAPPINGS> 部分開始。

1.2.4

練習

(1) 運行 ggplot(data = mpg),你會看到什么?

(2) 數據集 mpg 中有多少行?多少列?

(3) 變量 drv 的意義是什么?使用? ?mpg 命令閱讀幫助文件以找出答案。

(4) 使用 hwy 和 cyl 繪制一張散點圖。

(5) 如果使用 class 和 drv 繪制散點圖,會發生什么情況?為什么這張圖沒什么用處?

1.3

圖形屬性映射

圖形屬性是圖中對象的可視化屬性,其中包括數據點的大小、形狀和顏色。通過改變圖形屬性的值,可以用不同的方式來顯示數據點。

通過將圖中的圖形屬性映射為數據集中的變量,可以傳達出數據的相關信息。例如,可以將點的顏色映射為變量 class,從而揭示每輛汽車的類型:

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

(也可以用colour 代替 color)。

要想將圖形屬性映射為變量,需要在函數 aes() 中將圖形屬性名稱和變量名稱關聯起來。ggplot2 會自動為每個變量值分配唯一的圖形屬性水平(本例中是唯一的顏色),這個過程稱為標度變換。ggplot2 還會添加一個圖例,以表示圖形屬性水平和變量值之間的對應關系。

在上例中,我們將 class 映射為顏色,但也可以用同樣的方式將其映射為點的大小。在下面的示例中,每個點的實際大小表示其所屬的類別。這里我們收到一條警告信息,因為將無序變量(class)映射為有序圖形屬性(size)可不是好主意。

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

或者我們也可以將 class 映射為控制數據點透明度的 alpha 圖形屬性,還可以將其映射為點的形狀。

1#?上圖 2ggplot(data?=?mpg)?+ 3??geom_point(mapping?=?aes(x?=?displ,?y?=?hwy,?alpha?=?class)) 4#?下圖 5ggplot(data?=?mpg)?+ 6??geom_point(mapping?=?aes(x?=?displ,?y?=?hwy,?shape?=?class)) 1Warning?messages: 21:?The?shape?palette?can?deal?with?a?maximum?of?6?discrete?values?because?more?than?6 3becomes?difficult?to?discriminate;?you?have?7.?Consider?specifying?shapes?manually 4if?you?must?have?them.? 52:?Removed?62?rows?containing?missing?values?(geom_point).

ggplot2 只能同時使用 6 種形狀。默認情況下,當使用這種圖形屬性時,多出的變量值將不會出現在圖中。

還可以手動為幾何對象設置圖形屬性。例如,我們可以讓圖中的所有點都為藍色:

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

??顏色名稱是一個字符串。

? 點的大小用毫米表示。

? 點的形狀是一個數值,如圖所示。

1.4

分面

添加額外變量的一種方法是使用圖形屬性。另一種方法是將圖分割成多個分面,即可以顯示數據子集的子圖。這種方法特別適合添加分類變量。

要想通過單個變量對圖進行分面,可以使用函數 facet_wrap()。其第一個參數是一個公式,創建公式的方式是在 ~ 符號后面加一個變量名(這里所說的“公式”是 R 中的一種數據結構,不是數學意義上的公式)。傳遞給facet_wrap()的變量應該是離散型的。

1ggplot(data?=?mpg)?+ 2??geom_point(mapping?=?aes(x?=?displ,?y?=?hwy))?+ 3??facet_wrap(~?class,?nrow?=?2) 4

要想通過兩個變量對圖進行分面,需要在繪圖命令中加入函數 facet_grid()。這個函數的第一個參數也是一個公式,但該公式包含由 ~ 隔開的兩個變量名

1ggplot(data?=?mpg)?+ 2??geom_point(mapping?=?aes(x?=?displ,?y?=?hwy))?+ 3??facet_grid(drv~?cyl)

如果不想在行或列的維度進行分面,你可以使用 . 來代替變量名,例如 :

1ggplot(data?=?mpg)?+ 2??geom_point(mapping?=?aes(x?=?displ,?y?=?hwy))?+ 3??facet_grid(.~?cyl)

— END —

往期 · 推薦

《R數據科學》學習筆記|Note1:緒論

零基礎"機器學習"自學筆記|Note6:正規方程及其推導(內附詳細推導過程)

零基礎"機器學習"自學筆記|Note5:多變量線性回歸

零基礎"機器學習"自學筆記|Note6:正規方程及其推導(內附詳細推導過程)

歡迎關注 木舟筆記

總結

以上是生活随笔為你收集整理的《R数据科学》学习笔记|Note2:使用ggplot2进行数据可视化(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。