R语言数据可视化 ggplot2基础2 创建单图层的散点图 创建facet
R語言數據可視化 ggplot2基礎2 創建單圖層的散點圖 創建facet
- 單圖層散點圖
- 單圖層散點圖的facet
單圖層散點圖
這一講我們從最簡單的散點圖開始介紹ggplot2應用的基礎,首先我們下載并應用tidyverse包:
install.packages("tidyverse") library(tidyverse)用tidyverse自帶的數據mpg舉例,
> ggplot2::mpg # A tibble: 234 x 11manufacturer model displ year cyl trans drv cty<chr> <chr> <dbl> <int> <int> <chr> <chr> <int>1 audi a4 1.8 1999 4 auto~ f 182 audi a4 1.8 1999 4 manu~ f 213 audi a4 2 2008 4 manu~ f 204 audi a4 2 2008 4 auto~ f 215 audi a4 2.8 1999 6 auto~ f 166 audi a4 2.8 1999 6 manu~ f 187 audi a4 3.1 2008 6 auto~ f 188 audi a4 q~ 1.8 1999 4 manu~ 4 189 audi a4 q~ 1.8 1999 4 auto~ 4 16 10 audi a4 q~ 2 2008 4 manu~ 4 20 # ... with 224 more rows, and 3 more variables: # hwy <int>, fl <chr>, class <chr>在這個數據中,我們比較關注displ與hwy這兩個變量,displ表示引擎尺寸(升),hwy表示高速路上的燃油效率(英里/加侖)。為了展示這兩個變量之間的關系,我們先畫一個簡單的散點圖:
ggplot(data = mpg)+geom_point(mapping = aes(x = displ, y = hwy))因為我們只想要一個散點圖,所以用minimal code,而不是用上一講介紹的Layered Grammar,如果用Layered Grammar來寫那就是
ggplot()+layer(data = mpg,mapping = aes(x = displ, y = hwy),geom = "point",stat = "identity",position="identity")+scale_y_continuous()+scale_x_continuous()+coord_cartesian()這段代碼的輸出與minimal code輸出的圖像一樣,但這段代碼是嚴格按照Layered Grammar來寫的,ggplot()開頭表示接下來要應用圖形語法創建圖形對象,第一步是創建圖層,每一個圖層包含數據、映射(aesthetic mapping)、幾何對象、統計變換、位置調整;第二步是指定scale以及坐標系統;對比Layered Grammar與minimal code,大家可以開始建立一些直覺,哪些是可以省略的,哪些是minimal requirement,后續的代碼樣例都用minimal code。
整體來看這個散點圖是有一個下降的趨勢的,但右邊中部的哪些點很可能導致線性擬合殘差出現非線性pattern,因此我們希望引入另一個變量能解釋這種現象,于是我們可以把不同車型對應的散點用不同顏色表示:
ggplot(data = mpg)+geom_point(mapping = aes(x = displ, y = hwy, color = class))
這樣我們就可以分車型比較引擎尺寸與燃油效率的關系了。
大家可以自行嘗試在aesthetics mapping中把color=class改為alpha=class,shape=class或者size=class,這三個語句可以分別用透明度、點型、點的大小表示不同的車型。
單圖層散點圖的facet
如果我們不想把這些車型綜合到一張圖下比較,而是用subplot展示每一個車型引擎尺寸與燃油效率的關系,那么我們就需要創建facet了。
Minimal Code:
ggplot(data = mpg)+geom_point(mapping = aes(x = displ, y = hwy))+facet_wrap(~class,nrow = 2)Layered Grammar:
ggplot()+layer(data = mpg,mapping = aes(x = displ, y = hwy),geom = "point",stat = "identity",position="identity")+facet_wrap(~class,nrow = 2)+scale_y_continuous()+scale_x_continuous()+coord_cartesian()
facet_wrap(~class,nrow = 2)表示用車型的數據作為subplot創建facet,subplot均勻排列為兩行。
也可以使用兩個變量創建facet,比如把facet_wrap(~class,nrow = 2)改成facet_grid(drv~cyl),得到的結果就是
如果想去掉行,只保留列,可以用facet_grid(.~cyl)替換,
總結
以上是生活随笔為你收集整理的R语言数据可视化 ggplot2基础2 创建单图层的散点图 创建facet的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 统计学习II.7 广义线性模型1 指数分
- 下一篇: UA MATH567 高维统计 专题1