title: "《qqplot2: 數(shù)據(jù)分析與圖形藝術(shù)》學習筆記2"
author: "wintryheart"
date: "2019年5月11日"
output:
html_document:
toc: TRUE
toc_float: TRUE
knitr::opts_chunk$set(echo = TRUE, warning = FALSE)
注意:本筆記使用的R的版本為3.6.0呜魄。
第3章 語法突破
3.2 耗油量數(shù)據(jù)
ggplot2包中的mpg數(shù)據(jù)集記錄美國1999年和2008年部分汽車耗油量數(shù)據(jù)灼伤。變量包括:
變量名 | 含義 | 中文意思 |
---|---|---|
manufacturer | 制造商 | |
model | model name | 型號 |
displ | engine displacement, in litres | 發(fā)動機排量 |
year | year of manufacture | 制造年份 |
cyl | number of cylinders | 汽缸數(shù) |
trans | type of transmission | 傳動類型 |
drv | f = front-wheel drive, r = rear wheel drive, 4 = 4wd | 驅(qū)動類型 |
cty | city miles per gallon | 城市耗油量 |
hwy | highway miles per gallon | 高速耗油量 |
fl | fuel type | 燃油類型 |
class | "type" of car | 車型 |
library(ggplot2)
library(gridExtra)
data(mpg)
head(mpg)
也可以調(diào)用其它包,把R數(shù)據(jù)整理成通用表格形式。常用的有stargazer包,knitr包和xtable包财骨。
要調(diào)用其它包改變表格輸出吞琐,首先要設(shè)置knitr的results參數(shù)邻梆,results='asis'拱礁。
results參數(shù)選項 | 含義 | 中文意思 |
---|---|---|
hide | not display the code’s results | 不顯示結(jié)果 |
hold | delay displaying | 延遲輸出直至組塊結(jié)束 |
markup | mark up the results | 默認值琢锋,裝裱輸出 |
asis | pass through results without reformatting them | 原樣輸出 |
t1 <- mpg[1:6, ] #只展示前6個樣本辕漂。
stargazer::stargazer(t1, summary=FALSE, type="html", title = "Table with stargazer") #stargazer輸出的表格太過緊湊呢灶,并不好看。注意stargazer默認輸出summary statistics钉嘹,如果要顯示原始數(shù)據(jù)鸯乃,要把參數(shù)summary設(shè)置為FASLE。
knitr::kable(t1, caption = "Table with kable") #knitr包的kable輸出的是markdown格式的表格
print(xtable::xtable(t1, caption="Table with xtable"), type="html") #xtable包的xtablel輸出的表格也太緊湊。不好看缨睡。
manufacturer | model | displ | year | cyl | trans | drv | cty | hwy | fl | class |
---|---|---|---|---|---|---|---|---|---|---|
audi | a4 | 1.8 | 1999 | 4 | auto(l5) | f | 18 | 29 | p | compact |
audi | a4 | 1.8 | 1999 | 4 | manual(m5) | f | 21 | 29 | p | compact |
audi | a4 | 2.0 | 2008 | 4 | manual(m6) | f | 20 | 31 | p | compact |
audi | a4 | 2.0 | 2008 | 4 | auto(av) | f | 21 | 30 | p | compact |
audi | a4 | 2.8 | 1999 | 6 | auto(l5) | f | 16 | 26 | p | compact |
audi | a4 | 2.8 | 1999 | 6 | manual(m5) | f | 18 | 26 | p | compact |
3.3散點圖
qplot(displ, hwy, data=mpg, color=factor(cyl))
圖形屬性與數(shù)據(jù)的映射
在散點圖中鸟悴,每個觀測數(shù)據(jù)都用一個點來表示,點的位置由兩個變量的值決定奖年。
每個點不僅有橫坐標和縱坐標细诸,還有大小、顏色和形狀陋守。這些屬性稱之為圖形屬性(aesthetics)震贵。
每個圖形屬性都可以映射為一個變量或者設(shè)定成一個常數(shù)。
上圖中水评,變量displ控制點的水平位置猩系,變量hwy控制點的豎直位置,變量cyl控制點的顏色中燥。
而點的大小和形狀都沒有指定映射的變量寇甸,使用的默認值(常數(shù))。
幾何對象
- 點(points)疗涉、線(lines)和條(bars)都是幾何對象(geom)的具體形式拿霉。
- 幾何對象決定了圖形的類型(type)。
- 復雜的圖形可以有由多種幾何對象組成博敬。
標度變換
把數(shù)據(jù)單位(如升友浸、加侖和汽缸數(shù))轉(zhuǎn)換成電腦可以識別的物理單位(如像素和顏色)的轉(zhuǎn)換過程,稱之為標度變換(scaling)偏窝。
-
轉(zhuǎn)換后的數(shù)據(jù)對我們而言可能沒有意義收恢,但對電腦而言卻是可識別的:
- 顏色用6個字母組成的十六進制字符表示,如#FF6C91祭往。
- 大小和形狀分別用數(shù)字和整數(shù)來表示伦意。
上圖中,我們有三個圖形屬性需要進行標度變換:水平位置(x)硼补、豎直位置(y)和顏色驮肉。
如何根據(jù)點的位置(x和y)來確定它在圖中的位置,由坐標系統(tǒng)(Coord)決定已骇。大多數(shù)情況离钝,使用笛卡爾坐標系,但有時也會用極坐標系或球投影褪储。
顏色變換是將數(shù)據(jù)的值映射到一個由三原色組成的三維的顏色空間中卵渴。
最后對這些數(shù)據(jù)渲染,生成上展示的圖形對象鲤竹。
綜上浪读,繪制一個完整的圖形,我們需要組合三類圖形對象:
- 數(shù)據(jù), 由點來表示碘橘;
- 標度和坐標系互订, 用來生成坐標軸和圖例;
- 圖形注釋痘拆, 如背景和標題仰禽。
3.4 更復雜的圖形示例
- 三種新的組件:分面、多個圖層和統(tǒng)計量纺蛆。
- 每個圖層的每個分面面板(facet panel)都含一個小數(shù)據(jù)集坟瓢。
- 平滑曲線層展示了統(tǒng)計變換后的數(shù)據(jù)。
qplot(displ, hwy, data = mpg, facets = .~year) + geom_smooth()
3.5 圖層語法的組件
圖層語法所定義的圖由以下幾部分組成:
- 一個默認的數(shù)據(jù)庥和一組從變量到圖形屬性的映射犹撒;
- 一個或多個圖層折联,每個都由一種幾何對象、一種統(tǒng)計變換和一種位置調(diào)整組成识颊;
- 標度诚镰,每個圖形屬性映射都對應一個標度;
- 一個坐標系統(tǒng)祥款;
- 分面設(shè)定清笨。
3.6 數(shù)據(jù)結(jié)構(gòu)
- 一個圖形對象就是一個包含數(shù)據(jù)、映射刃跛、圖層抠艾、標度、坐標和分面的列表桨昙。
- 圖形對象還有一個組件:options检号,專門用來存儲特定的圖形主題選項。
- 繪圖有兩種方式:
- “一步到位”式蛙酪,qplot()齐苛;
- “逐層疊加”式,ggplot()+圖層函數(shù)
當我們得到一個圖形對象時桂塞,可以進行如下處理:
- print()將其呈現(xiàn)在屏幕上凹蜂。交互式操作時,print()會自動被調(diào)用阁危,但在循環(huán)和函數(shù)里玛痊,需要手動輸入print();
- ggsave()保存到磁盤狂打;
- summary()查看它的結(jié)構(gòu)擂煞;
- save()保存緩存副本到磁盤;可以用load()調(diào)用重現(xiàn)圖形菱父。