对于两个连续变量间的相关变动的可视化表示有一下两种方法:
geom_point()
画出散点图最简单的一种方法是:使用geom_point()
画出散点图。你可以将相关变动看作点的模式。例如,你可以看到钻石的克拉数和价值之间存在一种指数关系:
ggplot(data = diamonds) +
geom_point(mapping = aes(x = carat, y = price))
存在问题:随着数据集规模的不断增加,散点图的用处越来越小,因为数据点开始出现过绘制,并堆积在一片黑色区域中(如上面的散点图所示)
解决方法:使用alpha图形属性添加透明度:
ggplot(data = diamonds) +
geom_point(
mapping = aes(x = carat, y = price),
alpha = 1 / 100
)
但是对于特别大的数据集使用透明度也不管用了,另一种解决方法是使用分箱。
我们之前使用了
geom_histogram()
和geom_freqpoly()
函数(可参考5.3.1内容 )在一个维度上进行分箱。现在学习如何使用geom_bin2d()
和geom_hex()
函数在两个维度上进行分箱。
两个连续变量同时分箱
ggplot(data = smaller) +
geom_bin2d(mapping = aes(x = carat, y = price))
# install.packages("hexbin")
ggplot(data = smaller) +
geom_hex(mapping = aes(x = carat, y = price))
对其中一个连续变量进行分箱
这里连续变量的作用就相当于分类变量。接下来就可以使用前面学过的对分类变量和连续变量的组合进行可视化的技术了,具体可见5.3.1内容。
例如,对carat进行分箱,然后为每个组生成一个箱线图:
ggplot(data = smaller, mapping = aes(x = carat, y = price)) +
geom_boxplot(mapping = aes(group = cut_width(carat, 0.1)))
以上示例使用了cut_width(x, width)
函数将 x 变量分成等宽的分箱。
如果想要体现不同数量的观测值,可以使用参数varwidth = TRUE
让箱线图的宽度与观测数量成正比。
另一种方法是近似地显示每个分箱中的数据点的数量,此时可以使用cut_number()
函数:
ggplot(data = smaller, mapping = aes(x = carat, y = price)) +
geom_boxplot(mapping = aes(group = cut_number(carat, 20)))