举个例子,我们探索一下钻石价格是如何随着质量而变化的
ggplot(data = diamonds, mapping = aes(x = price)) +
geom_freqpoly(mapping = aes(color = cut), binwidth = 500)
很难看出分布上的差别,因为总体看来各组数量的差别太大了:
ggplot(diamonds) +
geom_bar(mapping = aes(x = cut))
为了让比较变得更容易,需要改变 y 轴的显示内容,不再显示计数,而是显示密度。密度是对计数的标准化,这样每个频率多边形下边的面积都是 1
ggplot(
data = diamonds,
mapping = aes(x = price, y = ..density..)
) +
geom_freqpoly(mapping = aes(color = cut), binwidth = 500)
这张图的部分内容非常令人惊讶,其显示出一般钻石(质量最差)的平均价格是最高的!但这可能是因为频率多边形图很难解释,所以这张图还有很多可以改进的地方。
按分类变量的分组显示连续变量分布的另一种方式是使用箱线图。箱线图是对变量值分布的一种简单可视化表示,这种图在统计学家中非常流行。
使用 geom_boxplot() 函数查看按切割质量分类的价格分布:
ggplot(data = diamonds, mapping = aes(x = cut, y = price)) +
geom_boxplot()
例如,我们看一下 mpg 数据集中的 class 变量。你可能很想知道公路里程因汽车类别的不同会有怎样的变化:
ggplot(data = mpg, mapping = aes(x = class, y = hwy)) +
geom_boxplot()
要想对两个分类变量间的相关变动进行可视化表示,需要计算出每个变量组合中的观测数量。完成这个任务的其中一种方法是使用内置的 geom_count() 函数:
ggplot(data = diamonds) +
geom_count(mapping = aes(x = cut, y = color))
图中每个圆点的大小表示每个变量组合中的观测数量。相关变动就表示为特定 x 轴变量值
与特定 y 轴变量值之间的强相关关系。
计算变量组合中的观测数量的另一种方法是使用 dplyr:
diamonds %>%
count(color, cut)
# A tibble: 35 x 3
color cut n
<ord> <ord> <int>
1 D Fair 163
2 D Good 662
3 D Very Good 1513
4 D Premium 1603
5 D Ideal 2834
6 E Fair 224
7 E Good 933
8 E Very Good 2400
9 E Premium 2337
10 E Ideal 3903
# ... with 25 more rows
发表评论