使用ggplot2畫XY散布圖(Scatter plots using ggplot2)
套路59: 使用ggplot2畫XY散布圖(Scatter plots using ggplot2)
1. 使用時機: 拿到數據時,對數據的某些基本特徵(集中或分散,線性、非線性相關或無關)進行分析了解。
2. 分析類型: 敘述性統計,資料視覺化,R繪圖。
3. 範例一、一組樣本 (資料): 咪路測量手養鳥出生天數(day)與翅膀長度(cm),資料如下:
X (day)
|
1
|
3
|
4
|
6
|
9
|
10
|
12
|
15
|
17
|
19
|
23
|
25
|
27
|
Y (翼長)
|
1.4
|
1.5
|
2.2
|
2.4
|
3.1
|
3.2
|
3.5
|
3.9
|
4.1
|
4.5
|
4.7
|
5.0
|
5.2
|
X,Y是否有線性關係?
第一步: 資料,輸入建立資料。
dat <-
read.table(header = T, text = "
age length
1 1.4
3 1.5
4 2.2
6 2.4
9 3.1
10 3.2
12 3.5
15 3.9
17 4.1
19 4.5
23 4.7
25 5.0
27 5.2")
# age及length資料以空白分隔。
attach(dat) # 告知R使用資料dat。
names(dat) # 指定資料標題。
dat # 顯示資料,可檢查資料格式是否正確
第二步: 安裝ggplot2程式套件。
第三步: 呼叫ggplot2程式套件備用。
library(ggplot2)
第四步: 畫圖一,使用ggplot2程式套件的函數ggplot代入dat、age及length畫XY散佈圖及回歸線。
ggplot(dat, aes(x = age,
y = length)) +
geom_point(shape = 1) # 畫空心圓
結果:
第四步: 畫圖二,使用ggplot2程式套件的函數ggplot代入dat、age及length畫XY散佈圖及回歸線。
ggplot(dat, aes(x = age,
y = length)) +
geom_point(shape = 1) + # 畫空心圓
geom_smooth(method = lm) # 加回歸線
結果:
# 灰色區域為95%信賴區間。
第四步: 畫圖三,使用ggplot2程式套件的函數ggplot代入dat、age及length畫XY散佈圖及回歸線。
ggplot(dat, aes(x = age,
y = length)) +
geom_point(shape = 1) + # 畫空心圓
geom_smooth(method = lm, se = FALSE)
# 加回歸線,不畫95%信賴區間。
結果:
4. 範例二、兩組樣本 (資料): 咪路測量兩組動物體溫(°C)與脈搏,資料如下:
體溫1
|
20.8
|
20.8
|
24
|
24
|
24
|
24
|
26.2
|
26.2
|
26.2
|
26.2
|
28.4
|
29
|
30.4
|
30.4
|
脈搏1
|
67.9
|
65.1
|
77.3
|
78.7
|
79.4
|
80.4
|
85.8
|
86.6
|
87.5
|
89.1
|
92.6
|
94.8
|
96.3
|
99.7
|
體溫2
|
17.2
|
18.3
|
18.3
|
18.9
|
18.9
|
20.4
|
21
|
21
|
22.1
|
23.5
|
24.2
|
25.9
|
26.5
|
29.6
|
脈搏2
|
44.3
|
47.2
|
47.6
|
49.6
|
50.3
|
51.8
|
56.5
|
58.9
|
60
|
63.7
|
69.8
|
72.9
|
77
|
84
|
第一步: 資料,輸入建立資料。使用基本模組(base)的read.table函數輸入建立資料儲存到變數dat中。
dat <-
read.table(header = T, text = "
Species Temp Pulse
ex 20.8 67.9
ex 20.8 65.1
ex 24 77.3
ex 24 78.7
ex 24 79.4
ex 24 80.4
ex 26.2 85.8
ex 26.2 86.6
ex 26.2 87.5
ex 26.2 89.1
ex 28.4 92.6
ex 29 94.8
ex 30.4 96.3
ex 30.4 99.7
niv 17.2 44.3
niv 18.3 47.2
niv 18.3 47.6
niv 18.9 49.6
niv 18.9 50.3
niv 20.4 51.8
niv 21 56.5
niv 21 58.9
niv 22.1 60
niv 23.5 63.7
niv 24.2 69.8
niv 25.9 72.9
niv 26.5 77
niv 29.6 84")
# Species、Temp及Pulse資料以空白分隔。
attach(dat) # 告知R使用資料dat。
names(dat) # 指定資料標題。
dat # 顯示資料,可檢查資料格式是否正確
第二步: 安裝ggplot2程式套件。
第三步: 呼叫ggplot2程式套件備用。
library(ggplot2)
第四步: 畫圖一。
ggplot(dat, aes(x =
Temp, y = Pulse, color = Species, shape = Species)) +
geom_point() # XY散佈圖
結果:
第四步: 畫圖二。
ggplot(dat, aes(x =
Temp, y = Pulse, color = Species, shape = Species)) +
geom_point() + # XY散佈圖
geom_smooth(method =
lm, fullrange = TRUE)
# 畫回歸線,及95%信賴區間。
結果:
第四步: 畫圖二。
ggplot(dat, aes(x =
Temp, y = Pulse, color = Species, shape = Species)) +
geom_point() + # XY散佈圖
geom_smooth(method =
lm, fullrange = TRUE, se = FALSE)
# 畫回歸線,不畫95%信賴區間。
結果:
5. 範例三、非線性關係 (資料): 咪路以河口為起點測量不同距離採樣點河水中的鉛含量,資料如下。
Sample
|
Dist. (km)
|
Conc. (mg/L)
|
1
|
1.22
|
40.9
|
2
|
1.34
|
41.8
|
3
|
1.51
|
42.4
|
4
|
1.66
|
43.0
|
5
|
1.72
|
43.4
|
6
|
1.93
|
43.9
|
7
|
2.14
|
44.3
|
8
|
2.39
|
44.7
|
9
|
2.51
|
45.0
|
10
|
2.78
|
45.1
|
11
|
2.97
|
45.4
|
12
|
3.17
|
46.2
|
13
|
3.32
|
47.0
|
14
|
3.50
|
48.6
|
15
|
3.53
|
49.0
|
16
|
3.85
|
49.7
|
17
|
3.95
|
50.0
|
18
|
4.11
|
50.8
|
19
|
4.18
|
51.1
|
畫非線性回歸線。
第一步: 資料,使用基本模組(base) read.table函數輸入建立資料儲存到變數m。
m <- read.table(header
= T, text = "
Dist Conc
1.22 40.9
1.34 41.8
1.51 42.4
1.66 43.0
1.72 43.4
1.93 43.9
2.14 44.3
2.39 44.7
2.51 45.0
2.78 45.1
2.97 45.4
3.17 46.2
3.32 47.0
3.50 48.6
3.53 49.0
3.85 49.7
3.95 50.0
4.11 50.8
4.18 51.1")
# 資料間以空白分隔
attach(m) # 告知R使用資料m。
names(m) # 指定資料標題。
第二步: 安裝ggplot2程式套件。
第三步: 呼叫ggplot2程式套件備用。
library(ggplot2)
第四步: 畫圖一。
ggplot(m, aes(x = Dist,
y = Conc)) +
geom_point(shape =
1) # 畫空心圓
結果:
第四步: 畫圖二。
ggplot(m, aes(x = Dist,
y = Conc)) +
geom_point(shape = 1) + # 畫空心圓
geom_smooth() # 加回歸線,及95%信賴區間。
結果:
第四步: 畫圖三。
ggplot(m, aes(x = Dist,
y = Conc)) +
geom_point(shape = 1)
+ # 畫空心圓
geom_smooth(se =
FALSE) # 畫回歸線,不畫95%信賴區間。
結果:
6. 範例四、加橢圓框 (資料): 咪路以河口為起點測量不同距離採樣點河水中的鉛含量,資料如下。
Sample
|
Dist. (km)
|
Conc. (mg/L)
|
1
|
1.22
|
40.9
|
2
|
1.34
|
41.8
|
3
|
1.51
|
42.4
|
4
|
1.66
|
43.0
|
5
|
1.72
|
43.4
|
6
|
1.93
|
43.9
|
7
|
2.14
|
44.3
|
8
|
2.39
|
44.7
|
9
|
2.51
|
45.0
|
10
|
2.78
|
45.1
|
11
|
2.97
|
45.4
|
12
|
3.17
|
46.2
|
13
|
3.32
|
47.0
|
14
|
3.50
|
48.6
|
15
|
3.53
|
49.0
|
16
|
3.85
|
49.7
|
17
|
3.95
|
50.0
|
18
|
4.11
|
50.8
|
19
|
4.18
|
51.1
|
第一步: 資料,使用基本模組(base) read.table函數輸入建立資料儲存到變數m。
m <-
read.table(header = T, text = "
Dist Conc
1.22 40.9
1.34 41.8
1.51 42.4
1.66 43.0
1.72 43.4
1.93 43.9
2.14 44.3
2.39 44.7
2.51 45.0
2.78 45.1
2.97 45.4
3.17 46.2
3.32 47.0
3.50 48.6
3.53 49.0
3.85 49.7
3.95 50.0
4.11 50.8
4.18 51.1")
# 資料間以空白分隔
attach(m) # 告知R使用資料m。
names(m) # 指定資料標題。
第二步: 安裝程式套件ggplot2。
第三步: 呼叫ggplot2。
library(ggplot2)
第四步: 畫圖。
ggplot(m, aes(x = Dist,
y = Conc, color = Dist > 2.5)) +
geom_point() + # 畫點
stat_ellipse() # 加橢圓,分群
結果:
來勁了嗎? 想知道更多?? 補充資料(連結): 關於R繪圖快速入門
留言
張貼留言