05-ggplot2 绘图——散点图

作者

Simonzhou

发布于

2025年7月25日

修改于

2025年8月3日

1 散点图

散点图常用来刻画两个连续变量之间的关系。

绘制散点图时,数据集中的每一个观测值都由散点图中的一个点来表示。通常,人们还会向散点图中添加一条直线,以用来表示基于某些统计模型的预测值。当散点图中的数据趋势难以用肉眼识别时,这些直线对我们理解数据的特征很有帮助。

当数据集很大时,散点图上的数据点会相互重叠,此时,很难在图上清楚地显示出所有的数据点。为了解决重叠的问题,我们可以先对数据进行汇总,再绘制散点图。

1.1 绘制基本散点图

使用 geom_point() 函数,分别映射一个变量到 x 和一个变量到 y。

这里使用 heightweight 数据集,这是一个多列数据集,接下来的例子我们只用到其中两列。

# load package
library(ggplot2)
library(gcookbook) # 加载gcookbook是为了使用heightweight数据集
library(dplyr)

# 列出我们绘制散点图要用到的两列的标题
heightweight %>% 
  select(ageYear, heightIn)
    ageYear heightIn
1     11.92     56.3
2     12.92     62.3
3     12.75     63.3
4     13.42     59.0
5     15.92     62.5
6     14.25     62.5
7     15.42     59.0
8     11.83     56.5
9     13.33     62.0
10    11.67     53.8
11    11.58     61.5
12    14.83     61.5
13    13.08     64.5
14    12.42     58.3
15    11.92     51.3
16    12.08     58.8
17    15.92     65.3
18    12.50     59.5
19    12.25     61.3
20    15.00     63.3
21    11.75     61.8
22    11.67     53.5
23    13.67     58.0
24    14.67     61.3
25    15.42     63.3
26    13.83     61.5
27    14.58     60.8
28    15.00     59.0
29    17.50     65.5
30    12.17     56.3
31    14.17     64.3
32    13.50     58.0
33    12.42     64.3
34    11.58     57.5
35    15.50     57.8
36    16.42     61.5
37    14.08     62.3
38    14.75     61.8
39    15.42     65.3
40    15.17     58.3
41    14.42     62.8
42    13.83     59.3
43    14.00     61.5
44    14.08     62.0
45    12.50     61.3
46    15.33     62.3
47    11.58     52.8
48    12.25     59.8
49    12.00     59.5
50    14.75     61.3
51    14.83     63.5
52    16.42     64.8
53    12.17     60.0
54    12.08     59.0
55    12.25     55.8
56    12.08     57.8
57    12.92     61.3
58    13.92     62.3
59    15.25     64.3
60    11.92     55.5
61    15.25     64.5
62    15.42     60.0
63    12.33     56.3
64    12.25     58.3
65    12.83     60.0
66    13.00     54.5
67    12.00     55.8
68    12.83     62.8
69    12.67     60.5
70    15.92     63.3
71    15.83     66.8
72    11.67     60.0
73    12.33     60.5
74    15.75     64.3
75    11.92     58.3
76    14.83     66.5
77    13.67     65.3
78    13.08     60.5
79    12.25     59.5
80    12.33     59.0
81    14.75     61.3
82    14.25     61.5
83    14.33     64.8
84    15.83     56.8
85    15.25     66.5
86    11.92     61.5
87    14.92     63.0
88    15.50     57.0
89    15.17     65.5
90    15.17     62.0
91    11.83     56.0
92    13.75     61.3
93    13.75     55.5
94    12.83     61.0
95    12.50     54.5
96    12.92     66.0
97    13.58     56.5
98    11.75     56.0
99    12.25     51.5
100   17.50     62.0
101   14.25     63.0
102   13.92     61.0
103   15.17     64.0
104   12.00     61.0
105   16.08     59.8
106   11.75     61.3
107   13.67     63.3
108   15.50     63.5
109   14.08     61.5
110   14.58     60.3
111   15.00     61.3
112   13.75     64.8
113   13.08     60.5
114   12.00     57.3
115   12.50     59.5
116   12.50     60.8
117   11.58     60.5
118   15.75     67.0
119   15.25     64.8
120   12.25     50.5
121   12.17     57.5
122   13.33     60.5
123   13.00     61.8
124   14.42     61.3
125   12.58     66.3
126   11.75     53.3
127   12.50     59.0
128   13.67     57.8
129   12.75     60.0
130   17.17     68.3
132   14.67     63.8
133   14.67     65.0
134   11.67     59.5
135   15.42     66.0
136   15.00     61.8
137   12.17     57.3
138   15.25     66.0
139   11.67     56.5
140   12.58     58.3
141   12.58     61.0
142   12.00     62.8
143   13.33     59.3
144   14.83     67.3
145   16.08     66.3
146   13.50     64.5
147   13.67     60.5
148   15.50     66.0
149   11.92     57.5
150   14.58     64.0
151   14.58     68.0
152   14.58     63.5
153   14.42     69.0
154   14.17     63.8
155   14.50     66.0
156   13.67     63.5
157   12.00     59.5
158   13.00     66.3
159   12.42     57.0
160   12.00     60.0
161   12.25     57.0
162   15.67     67.3
163   14.08     62.0
164   14.33     65.0
165   12.50     59.5
166   16.08     67.8
167   13.08     58.0
168   14.00     60.0
169   11.67     58.5
170   13.00     58.3
171   13.00     61.5
172   13.17     65.0
173   15.33     66.5
174   13.00     68.5
175   12.00     57.0
176   14.67     61.5
177   14.00     66.5
178   12.42     52.5
179   11.83     55.0
180   15.67     71.0
181   16.92     66.5
182   11.83     58.8
183   15.75     66.3
184   15.67     65.8
185   16.67     71.0
186   12.67     59.5
187   14.50     69.8
188   13.83     62.5
189   12.08     56.5
190   11.92     57.5
191   13.58     65.3
192   13.83     67.3
193   15.17     67.0
194   14.42     66.0
195   12.92     61.8
196   13.50     60.0
197   14.75     63.0
198   14.75     60.5
199   14.58     65.5
200   13.83     62.0
201   12.50     59.0
202   12.50     61.8
203   15.67     63.3
204   13.58     66.0
205   14.25     61.8
206   13.50     63.0
207   11.75     57.5
208   14.50     63.0
209   11.83     56.0
210   12.33     60.5
211   11.67     56.8
212   13.33     64.0
213   12.00     60.0
214   17.17     69.5
215   13.25     63.3
216   12.42     56.3
217   16.08     72.0
218   16.17     65.3
219   12.67     60.8
220   12.17     55.0
221   11.58     55.0
222   15.50     66.5
223   13.42     56.8
224   12.75     64.8
225   16.33     64.5
226   13.67     58.0
227   13.25     62.8
228   14.83     63.8
229   12.75     57.8
230   12.92     57.3
231   14.83     63.5
232   11.83     55.0
233   13.67     66.5
234   15.75     65.0
235   13.67     61.5
236   13.92     62.0
237   12.58     59.3
#>     ageYear heightIn
#> 1     11.92     56.3
#> 2     12.92     62.3
#> 3     12.75     63.3
#>  ...<230 more rows>...
#> 235   13.67     61.5
#> 236   13.92     62.0
#> 237   12.58     59.3

ggplot(heightweight, aes(x = ageYear, y = heightIn)) + 
  geom_point()
图 1: 基本散点图

通过设定形状(shape)参数可以在散点图中绘制点以外的形状。例如,我们常用空心圈 shape=21(图 图 3 )代替默认的实心圆 shape=19(图 图 1 )​。

# load package
library(ggplot2)
library(gcookbook) # 加载gcookbook是为了使用heightweight数据集
library(dplyr)

# 列出我们绘制散点图要用到的两列的标题
heightweight %>% 
  select(ageYear, heightIn)
    ageYear heightIn
1     11.92     56.3
2     12.92     62.3
3     12.75     63.3
4     13.42     59.0
5     15.92     62.5
6     14.25     62.5
7     15.42     59.0
8     11.83     56.5
9     13.33     62.0
10    11.67     53.8
11    11.58     61.5
12    14.83     61.5
13    13.08     64.5
14    12.42     58.3
15    11.92     51.3
16    12.08     58.8
17    15.92     65.3
18    12.50     59.5
19    12.25     61.3
20    15.00     63.3
21    11.75     61.8
22    11.67     53.5
23    13.67     58.0
24    14.67     61.3
25    15.42     63.3
26    13.83     61.5
27    14.58     60.8
28    15.00     59.0
29    17.50     65.5
30    12.17     56.3
31    14.17     64.3
32    13.50     58.0
33    12.42     64.3
34    11.58     57.5
35    15.50     57.8
36    16.42     61.5
37    14.08     62.3
38    14.75     61.8
39    15.42     65.3
40    15.17     58.3
41    14.42     62.8
42    13.83     59.3
43    14.00     61.5
44    14.08     62.0
45    12.50     61.3
46    15.33     62.3
47    11.58     52.8
48    12.25     59.8
49    12.00     59.5
50    14.75     61.3
51    14.83     63.5
52    16.42     64.8
53    12.17     60.0
54    12.08     59.0
55    12.25     55.8
56    12.08     57.8
57    12.92     61.3
58    13.92     62.3
59    15.25     64.3
60    11.92     55.5
61    15.25     64.5
62    15.42     60.0
63    12.33     56.3
64    12.25     58.3
65    12.83     60.0
66    13.00     54.5
67    12.00     55.8
68    12.83     62.8
69    12.67     60.5
70    15.92     63.3
71    15.83     66.8
72    11.67     60.0
73    12.33     60.5
74    15.75     64.3
75    11.92     58.3
76    14.83     66.5
77    13.67     65.3
78    13.08     60.5
79    12.25     59.5
80    12.33     59.0
81    14.75     61.3
82    14.25     61.5
83    14.33     64.8
84    15.83     56.8
85    15.25     66.5
86    11.92     61.5
87    14.92     63.0
88    15.50     57.0
89    15.17     65.5
90    15.17     62.0
91    11.83     56.0
92    13.75     61.3
93    13.75     55.5
94    12.83     61.0
95    12.50     54.5
96    12.92     66.0
97    13.58     56.5
98    11.75     56.0
99    12.25     51.5
100   17.50     62.0
101   14.25     63.0
102   13.92     61.0
103   15.17     64.0
104   12.00     61.0
105   16.08     59.8
106   11.75     61.3
107   13.67     63.3
108   15.50     63.5
109   14.08     61.5
110   14.58     60.3
111   15.00     61.3
112   13.75     64.8
113   13.08     60.5
114   12.00     57.3
115   12.50     59.5
116   12.50     60.8
117   11.58     60.5
118   15.75     67.0
119   15.25     64.8
120   12.25     50.5
121   12.17     57.5
122   13.33     60.5
123   13.00     61.8
124   14.42     61.3
125   12.58     66.3
126   11.75     53.3
127   12.50     59.0
128   13.67     57.8
129   12.75     60.0
130   17.17     68.3
132   14.67     63.8
133   14.67     65.0
134   11.67     59.5
135   15.42     66.0
136   15.00     61.8
137   12.17     57.3
138   15.25     66.0
139   11.67     56.5
140   12.58     58.3
141   12.58     61.0
142   12.00     62.8
143   13.33     59.3
144   14.83     67.3
145   16.08     66.3
146   13.50     64.5
147   13.67     60.5
148   15.50     66.0
149   11.92     57.5
150   14.58     64.0
151   14.58     68.0
152   14.58     63.5
153   14.42     69.0
154   14.17     63.8
155   14.50     66.0
156   13.67     63.5
157   12.00     59.5
158   13.00     66.3
159   12.42     57.0
160   12.00     60.0
161   12.25     57.0
162   15.67     67.3
163   14.08     62.0
164   14.33     65.0
165   12.50     59.5
166   16.08     67.8
167   13.08     58.0
168   14.00     60.0
169   11.67     58.5
170   13.00     58.3
171   13.00     61.5
172   13.17     65.0
173   15.33     66.5
174   13.00     68.5
175   12.00     57.0
176   14.67     61.5
177   14.00     66.5
178   12.42     52.5
179   11.83     55.0
180   15.67     71.0
181   16.92     66.5
182   11.83     58.8
183   15.75     66.3
184   15.67     65.8
185   16.67     71.0
186   12.67     59.5
187   14.50     69.8
188   13.83     62.5
189   12.08     56.5
190   11.92     57.5
191   13.58     65.3
192   13.83     67.3
193   15.17     67.0
194   14.42     66.0
195   12.92     61.8
196   13.50     60.0
197   14.75     63.0
198   14.75     60.5
199   14.58     65.5
200   13.83     62.0
201   12.50     59.0
202   12.50     61.8
203   15.67     63.3
204   13.58     66.0
205   14.25     61.8
206   13.50     63.0
207   11.75     57.5
208   14.50     63.0
209   11.83     56.0
210   12.33     60.5
211   11.67     56.8
212   13.33     64.0
213   12.00     60.0
214   17.17     69.5
215   13.25     63.3
216   12.42     56.3
217   16.08     72.0
218   16.17     65.3
219   12.67     60.8
220   12.17     55.0
221   11.58     55.0
222   15.50     66.5
223   13.42     56.8
224   12.75     64.8
225   16.33     64.5
226   13.67     58.0
227   13.25     62.8
228   14.83     63.8
229   12.75     57.8
230   12.92     57.3
231   14.83     63.5
232   11.83     55.0
233   13.67     66.5
234   15.75     65.0
235   13.67     61.5
236   13.92     62.0
237   12.58     59.3
ggplot(heightweight, aes(x = ageYear, y = heightIn)) + 
  geom_point(shape = 21)
图 2: 基本散点图-修改形状

修改点的大小(在默认实心圆点的情况下),默认点的大小为:size=2

# load package
library(ggplot2)
library(gcookbook) # 加载gcookbook是为了使用heightweight数据集
library(dplyr)

# 列出我们绘制散点图要用到的两列的标题
heightweight %>% 
  select(ageYear, heightIn)
    ageYear heightIn
1     11.92     56.3
2     12.92     62.3
3     12.75     63.3
4     13.42     59.0
5     15.92     62.5
6     14.25     62.5
7     15.42     59.0
8     11.83     56.5
9     13.33     62.0
10    11.67     53.8
11    11.58     61.5
12    14.83     61.5
13    13.08     64.5
14    12.42     58.3
15    11.92     51.3
16    12.08     58.8
17    15.92     65.3
18    12.50     59.5
19    12.25     61.3
20    15.00     63.3
21    11.75     61.8
22    11.67     53.5
23    13.67     58.0
24    14.67     61.3
25    15.42     63.3
26    13.83     61.5
27    14.58     60.8
28    15.00     59.0
29    17.50     65.5
30    12.17     56.3
31    14.17     64.3
32    13.50     58.0
33    12.42     64.3
34    11.58     57.5
35    15.50     57.8
36    16.42     61.5
37    14.08     62.3
38    14.75     61.8
39    15.42     65.3
40    15.17     58.3
41    14.42     62.8
42    13.83     59.3
43    14.00     61.5
44    14.08     62.0
45    12.50     61.3
46    15.33     62.3
47    11.58     52.8
48    12.25     59.8
49    12.00     59.5
50    14.75     61.3
51    14.83     63.5
52    16.42     64.8
53    12.17     60.0
54    12.08     59.0
55    12.25     55.8
56    12.08     57.8
57    12.92     61.3
58    13.92     62.3
59    15.25     64.3
60    11.92     55.5
61    15.25     64.5
62    15.42     60.0
63    12.33     56.3
64    12.25     58.3
65    12.83     60.0
66    13.00     54.5
67    12.00     55.8
68    12.83     62.8
69    12.67     60.5
70    15.92     63.3
71    15.83     66.8
72    11.67     60.0
73    12.33     60.5
74    15.75     64.3
75    11.92     58.3
76    14.83     66.5
77    13.67     65.3
78    13.08     60.5
79    12.25     59.5
80    12.33     59.0
81    14.75     61.3
82    14.25     61.5
83    14.33     64.8
84    15.83     56.8
85    15.25     66.5
86    11.92     61.5
87    14.92     63.0
88    15.50     57.0
89    15.17     65.5
90    15.17     62.0
91    11.83     56.0
92    13.75     61.3
93    13.75     55.5
94    12.83     61.0
95    12.50     54.5
96    12.92     66.0
97    13.58     56.5
98    11.75     56.0
99    12.25     51.5
100   17.50     62.0
101   14.25     63.0
102   13.92     61.0
103   15.17     64.0
104   12.00     61.0
105   16.08     59.8
106   11.75     61.3
107   13.67     63.3
108   15.50     63.5
109   14.08     61.5
110   14.58     60.3
111   15.00     61.3
112   13.75     64.8
113   13.08     60.5
114   12.00     57.3
115   12.50     59.5
116   12.50     60.8
117   11.58     60.5
118   15.75     67.0
119   15.25     64.8
120   12.25     50.5
121   12.17     57.5
122   13.33     60.5
123   13.00     61.8
124   14.42     61.3
125   12.58     66.3
126   11.75     53.3
127   12.50     59.0
128   13.67     57.8
129   12.75     60.0
130   17.17     68.3
132   14.67     63.8
133   14.67     65.0
134   11.67     59.5
135   15.42     66.0
136   15.00     61.8
137   12.17     57.3
138   15.25     66.0
139   11.67     56.5
140   12.58     58.3
141   12.58     61.0
142   12.00     62.8
143   13.33     59.3
144   14.83     67.3
145   16.08     66.3
146   13.50     64.5
147   13.67     60.5
148   15.50     66.0
149   11.92     57.5
150   14.58     64.0
151   14.58     68.0
152   14.58     63.5
153   14.42     69.0
154   14.17     63.8
155   14.50     66.0
156   13.67     63.5
157   12.00     59.5
158   13.00     66.3
159   12.42     57.0
160   12.00     60.0
161   12.25     57.0
162   15.67     67.3
163   14.08     62.0
164   14.33     65.0
165   12.50     59.5
166   16.08     67.8
167   13.08     58.0
168   14.00     60.0
169   11.67     58.5
170   13.00     58.3
171   13.00     61.5
172   13.17     65.0
173   15.33     66.5
174   13.00     68.5
175   12.00     57.0
176   14.67     61.5
177   14.00     66.5
178   12.42     52.5
179   11.83     55.0
180   15.67     71.0
181   16.92     66.5
182   11.83     58.8
183   15.75     66.3
184   15.67     65.8
185   16.67     71.0
186   12.67     59.5
187   14.50     69.8
188   13.83     62.5
189   12.08     56.5
190   11.92     57.5
191   13.58     65.3
192   13.83     67.3
193   15.17     67.0
194   14.42     66.0
195   12.92     61.8
196   13.50     60.0
197   14.75     63.0
198   14.75     60.5
199   14.58     65.5
200   13.83     62.0
201   12.50     59.0
202   12.50     61.8
203   15.67     63.3
204   13.58     66.0
205   14.25     61.8
206   13.50     63.0
207   11.75     57.5
208   14.50     63.0
209   11.83     56.0
210   12.33     60.5
211   11.67     56.8
212   13.33     64.0
213   12.00     60.0
214   17.17     69.5
215   13.25     63.3
216   12.42     56.3
217   16.08     72.0
218   16.17     65.3
219   12.67     60.8
220   12.17     55.0
221   11.58     55.0
222   15.50     66.5
223   13.42     56.8
224   12.75     64.8
225   16.33     64.5
226   13.67     58.0
227   13.25     62.8
228   14.83     63.8
229   12.75     57.8
230   12.92     57.3
231   14.83     63.5
232   11.83     55.0
233   13.67     66.5
234   15.75     65.0
235   13.67     61.5
236   13.92     62.0
237   12.58     59.3
ggplot(heightweight, aes(x = ageYear, y = heightIn)) + 
  geom_point(size = 1.5)
图 3: 基本散点图-修改散点大小

1.2 使用点形或颜色属性对数据点进行分组

将分组变量映射到点形(shape)或颜色(colour)属性。

接下来的例子中,我们将用到 heightweight 数据集中的3列。

# load package
library(ggplot2)
library(gcookbook) # 加载gcookbook是为了使用heightweight数据集
library(dplyr)

# 列出要用到的3列的标题
heightweight %>%
  select(sex, ageYear, heightIn)
#>     sex ageYear heightIn
#> 1     f   11.92     56.3
#> 2     f   12.92     62.3
#> 3     f   12.75     63.3
#>  ...<230 more rows>...
#> 235   m   13.67     61.5
#> 236   m   13.92     62.0
#> 237   m   12.58     59.3

ggplot(heightweight, aes(x = ageYear, y = heightIn,color = sex)) + 
  geom_point()

ggplot(heightweight, aes(x = ageYear, y = heightIn,shape = sex)) + 
  geom_point()
    sex ageYear heightIn
1     f   11.92     56.3
2     f   12.92     62.3
3     f   12.75     63.3
4     f   13.42     59.0
5     f   15.92     62.5
6     f   14.25     62.5
7     f   15.42     59.0
8     f   11.83     56.5
9     f   13.33     62.0
10    f   11.67     53.8
11    f   11.58     61.5
12    f   14.83     61.5
13    f   13.08     64.5
14    f   12.42     58.3
15    f   11.92     51.3
16    f   12.08     58.8
17    f   15.92     65.3
18    f   12.50     59.5
19    f   12.25     61.3
20    f   15.00     63.3
21    f   11.75     61.8
22    f   11.67     53.5
23    f   13.67     58.0
24    f   14.67     61.3
25    f   15.42     63.3
26    f   13.83     61.5
27    f   14.58     60.8
28    f   15.00     59.0
29    f   17.50     65.5
30    f   12.17     56.3
31    f   14.17     64.3
32    f   13.50     58.0
33    f   12.42     64.3
34    f   11.58     57.5
35    f   15.50     57.8
36    f   16.42     61.5
37    f   14.08     62.3
38    f   14.75     61.8
39    f   15.42     65.3
40    f   15.17     58.3
41    f   14.42     62.8
42    f   13.83     59.3
43    f   14.00     61.5
44    f   14.08     62.0
45    f   12.50     61.3
46    f   15.33     62.3
47    f   11.58     52.8
48    f   12.25     59.8
49    f   12.00     59.5
50    f   14.75     61.3
51    f   14.83     63.5
52    f   16.42     64.8
53    f   12.17     60.0
54    f   12.08     59.0
55    f   12.25     55.8
56    f   12.08     57.8
57    f   12.92     61.3
58    f   13.92     62.3
59    f   15.25     64.3
60    f   11.92     55.5
61    f   15.25     64.5
62    f   15.42     60.0
63    f   12.33     56.3
64    f   12.25     58.3
65    f   12.83     60.0
66    f   13.00     54.5
67    f   12.00     55.8
68    f   12.83     62.8
69    f   12.67     60.5
70    f   15.92     63.3
71    f   15.83     66.8
72    f   11.67     60.0
73    f   12.33     60.5
74    f   15.75     64.3
75    f   11.92     58.3
76    f   14.83     66.5
77    f   13.67     65.3
78    f   13.08     60.5
79    f   12.25     59.5
80    f   12.33     59.0
81    f   14.75     61.3
82    f   14.25     61.5
83    f   14.33     64.8
84    f   15.83     56.8
85    f   15.25     66.5
86    f   11.92     61.5
87    f   14.92     63.0
88    f   15.50     57.0
89    f   15.17     65.5
90    f   15.17     62.0
91    f   11.83     56.0
92    f   13.75     61.3
93    f   13.75     55.5
94    f   12.83     61.0
95    f   12.50     54.5
96    f   12.92     66.0
97    f   13.58     56.5
98    f   11.75     56.0
99    f   12.25     51.5
100   f   17.50     62.0
101   f   14.25     63.0
102   f   13.92     61.0
103   f   15.17     64.0
104   f   12.00     61.0
105   f   16.08     59.8
106   f   11.75     61.3
107   f   13.67     63.3
108   f   15.50     63.5
109   f   14.08     61.5
110   f   14.58     60.3
111   f   15.00     61.3
112   m   13.75     64.8
113   m   13.08     60.5
114   m   12.00     57.3
115   m   12.50     59.5
116   m   12.50     60.8
117   m   11.58     60.5
118   m   15.75     67.0
119   m   15.25     64.8
120   m   12.25     50.5
121   m   12.17     57.5
122   m   13.33     60.5
123   m   13.00     61.8
124   m   14.42     61.3
125   m   12.58     66.3
126   m   11.75     53.3
127   m   12.50     59.0
128   m   13.67     57.8
129   m   12.75     60.0
130   m   17.17     68.3
132   m   14.67     63.8
133   m   14.67     65.0
134   m   11.67     59.5
135   m   15.42     66.0
136   m   15.00     61.8
137   m   12.17     57.3
138   m   15.25     66.0
139   m   11.67     56.5
140   m   12.58     58.3
141   m   12.58     61.0
142   m   12.00     62.8
143   m   13.33     59.3
144   m   14.83     67.3
145   m   16.08     66.3
146   m   13.50     64.5
147   m   13.67     60.5
148   m   15.50     66.0
149   m   11.92     57.5
150   m   14.58     64.0
151   m   14.58     68.0
152   m   14.58     63.5
153   m   14.42     69.0
154   m   14.17     63.8
155   m   14.50     66.0
156   m   13.67     63.5
157   m   12.00     59.5
158   m   13.00     66.3
159   m   12.42     57.0
160   m   12.00     60.0
161   m   12.25     57.0
162   m   15.67     67.3
163   m   14.08     62.0
164   m   14.33     65.0
165   m   12.50     59.5
166   m   16.08     67.8
167   m   13.08     58.0
168   m   14.00     60.0
169   m   11.67     58.5
170   m   13.00     58.3
171   m   13.00     61.5
172   m   13.17     65.0
173   m   15.33     66.5
174   m   13.00     68.5
175   m   12.00     57.0
176   m   14.67     61.5
177   m   14.00     66.5
178   m   12.42     52.5
179   m   11.83     55.0
180   m   15.67     71.0
181   m   16.92     66.5
182   m   11.83     58.8
183   m   15.75     66.3
184   m   15.67     65.8
185   m   16.67     71.0
186   m   12.67     59.5
187   m   14.50     69.8
188   m   13.83     62.5
189   m   12.08     56.5
190   m   11.92     57.5
191   m   13.58     65.3
192   m   13.83     67.3
193   m   15.17     67.0
194   m   14.42     66.0
195   m   12.92     61.8
196   m   13.50     60.0
197   m   14.75     63.0
198   m   14.75     60.5
199   m   14.58     65.5
200   m   13.83     62.0
201   m   12.50     59.0
202   m   12.50     61.8
203   m   15.67     63.3
204   m   13.58     66.0
205   m   14.25     61.8
206   m   13.50     63.0
207   m   11.75     57.5
208   m   14.50     63.0
209   m   11.83     56.0
210   m   12.33     60.5
211   m   11.67     56.8
212   m   13.33     64.0
213   m   12.00     60.0
214   m   17.17     69.5
215   m   13.25     63.3
216   m   12.42     56.3
217   m   16.08     72.0
218   m   16.17     65.3
219   m   12.67     60.8
220   m   12.17     55.0
221   m   11.58     55.0
222   m   15.50     66.5
223   m   13.42     56.8
224   m   12.75     64.8
225   m   16.33     64.5
226   m   13.67     58.0
227   m   13.25     62.8
228   m   14.83     63.8
229   m   12.75     57.8
230   m   12.92     57.3
231   m   14.83     63.5
232   m   11.83     55.0
233   m   13.67     66.5
234   m   15.75     65.0
235   m   13.67     61.5
236   m   13.92     62.0
237   m   12.58     59.3
(A) 按颜色分组
(B) 按形状分组
图 4: 基本散点图-按形/色分组

选用的分组变量必须是分类变量,换言之,它必须是因子型或者字符型的向量。如果分组变量是数值型向量,则需要将它转化为因子型变量之后,才能以其作为分组变量。

可以将一个变量同时映射到 shapecolour 属性。当有多个分组变量时,可以将它们分别映射到不同的图形属性。下面,我们把变量 sex 同时映射到 shapecolour 属性,见图 图 5

ggplot(heightweight, aes(x = ageYear, y = heightIn,color = sex,shape = sex)) + 
  geom_point()
图 5: 基本散点图-按形和色分组

有时需要使用不同于默认设置的点形和颜色。通过调用scale_shape_manual() 函数可以使用其他点形;

调用 scale_colour_brewer() 函数或者 scale_colour_manual() 函数可以使用其他调色板,见图 图 6

ggplot(heightweight, aes(x = ageYear, y = heightIn, shape = sex, colour = sex)) + 
  geom_point() +
  scale_shape_manual(values = c(1,2)) + 
  scale_colour_brewer(palette = "Set1")
图 6: 基本散点图-修改调色板

1.3 使用不同于默认设置的点形

通过指定 geom_point() 函数中的点形(shape)参数,可以同时设定散点图中所有数据点的点形,如图 图 7 所示。

ggplot(heightweight, aes(x = ageYear, y = heightIn)) + 
  geom_point(shape = 3)
图 7: 指定散点形状

R系统绘图可以调用的图形较多,一些点形只有边框线(1~14)​;一些只有实心填充区域(15~20)​;还有一些则由可分离的边框线和具有填充色的实心区域共同组成(21~25)​,也可以用字符作点形。

如果已将分组变量映射到 shape,则可以调用 scale_shape_manual() 函数来手动修改该分组变量不同水平的点形

下图将使用略大且自定义点形的数据点:

ggplot(heightweight, aes(x = ageYear, y = heightIn, shape = sex)) + 
  geom_point(size = 3)+
  scale_shape_manual(values = c(1,4))
图 8: 自定义散点形状
  • 点形1~20的点的颜色,包括实心区域的颜色都可由 colour 参数来控制。

  • 对于点形21~25而言,边框线和实心区域的颜色则分别由 colourfill 参数来控制。

我们可以将两个不同的变量分别由点形和填充色(空心或有填充)属性来表示。

为了实现这一功能,首先需要选择一个同时具有 colourfill 属性的点形,在 scale_shape_manual 中设定。之后需要在scale_fill_manual() 中选择一个包括 NA 和其他颜色的调色板(NA会生成一个空心的形状)​。