写在前面。
这篇文章对应原书的第6章,主要介绍一些描述数据分布的可视化图形。主要包括如下这些:
- 直方图
- 密度图
- 频数多边形
- 箱线图
- 小提琴图
- Wilkinson点图
直方图
直方图
是常见的一种呈现数据分布情况
的图形,下面分别说明一下。
分组直方图
如何绘制多组数据的直方图
?
- 进行分面
运行geom_histogram()
并进行分面绘图
即可,使用的示例数据需要加载MASS包。
示例数据birthwt
数据集:
> str(birthwt)
'data.frame': 189 obs. of 10 variables:
$ low : int 0 0 0 0 0 0 0 0 0 0 ...
$ age : int 19 33 20 21 18 21 22 17 29 26 ...
$ lwt : int 182 155 105 108 107 124 118 103 123 113 ...
$ race : int 2 3 1 1 1 3 1 3 1 1 ...
$ smoke: int 0 0 1 1 1 0 0 0 1 1 ...
$ ptl : int 0 0 0 0 0 0 0 0 0 0 ...
$ ht : int 0 0 0 0 0 0 0 0 0 0 ...
$ ui : int 1 0 0 1 1 0 0 0 0 0 ...
$ ftv : int 0 3 1 2 0 0 1 1 1 0 ...
$ bwt : int 2523 2551 2557 2594 2600 2622 2637 2637 2663 2665 ...
图形分面在后面的章节进行说明,这里只进行简单的使用,使用facet_grid(var1~var2)
语句:
ggplot(data = birthwt, aes(x = bwt)) +
geom_histogram(fill = "white", colour = "black") +
facet_grid(smoke~.)
上例使用数据集中的smoke
变量作为了分面的变量
。
分面标签
只显示了0
和1
,可以将smoke
进行因子转换。
birthwt$smoke <- factor(birthwt$smoke, levels = c(0,1), labels = c("No Smoke", "Smoke"))
ggplot(data = birthwt, aes(x = bwt)) +
geom_histogram(fill = "white", colour = "black") +
facet_grid(smoke~.)
- 映射给颜色属性
另一种方式是将分组变量映射给fill参数:
birthwt$smoke <- factor(birthwt$smoke, levels = c(0,1), labels = c("No Smoke", "Smoke"))
ggplot(data = birthwt, aes(x = bwt, fill = smoke)) +
geom_histogram(position = "identity", alpha = 0.4)
position = "identity"
, alpha = 0.4
,这些参数的设置很重要,使图形可以看清楚,如果没有position = "identity"
设置,图形会垂直堆积。
ggplot(data = birthwt, aes(x = bwt, fill = smoke)) +
geom_histogram()