查看原文
其他

R数据科学|5.5.3内容介绍

我才是赵西西 庄闪闪的R语言手册 2023-05-11

5.5.3 两个连续变量

对于两个连续变量间的相关变动的可视化表示有一下两种方法:

  1. 使用geom_point()画出散点图

  2. 使用分箱处理

使用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()函数在两个维度上进行分箱。

两个连续变量同时分箱

  • geom_bin2d()创建长方形分箱
ggplot(data = smaller) +
 geom_bin2d(mapping = aes(x = carat, y = price))
  • geom_hex()创建六边形分箱
# 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)))



往期推荐


R数据科学|5.5.1 内容介绍

R数据科学|5.5.1 习题解答

R数据科学|5.4内容介绍及习题解答

R数据科学|5.3内容介绍

R数据科学|5.3课后习题解答


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存