条形图虽然简单,但很有意思,因为它可以揭示出图形中的一些微妙信息。我们看一下用 geom_bar() 函数就可以绘制的基本条形图。下面的条形图显示
了 diamonds 数据集中按照 cut 变量分组的各种钻石的总数量。 diamonds 数据集是 ggplot2
的内置数据集,包含大约 54 000 颗钻石的信息,每颗钻石具有 price、 carat、 color、
clarity 和 cut 变量。条形图显示,高质量切割钻石的数量要比低质量切割钻石的数量多:
ggplot(data = diamonds) +
geom_bar(mapping = aes(x = cut))
条形图 x 轴显示的是 cut,这是 diamonds 数据集中的一个变量。 y 轴显示的是 count,但
count 不是 diamonds 中的变量!那么 count 来自哪里呢?很多图形绘制的是数据集的原始
数据,比如散点图。另外一些图形则可以绘制那些计算出的新数据,比如条形图。
• 条形图、直方图和频率多边形图可以对数据进行分箱,然后绘制出分箱数量和落在每个
分箱的数据点的数量。
• 平滑曲线会为数据拟合一个模型,然后绘制出模型预测值。
• 箱线图可以计算出数据分布的多种摘要统计量,并显示一个特殊形式的箱体。
绘图时用来计算新数据的算法称为 stat(statistical transformation, 统计变换)。下图描述了
geom_bar() 函数的统计变换过程。
(3) geom_bar() 使用变换后的数
据进行绘图, cut映射到x轴,
count映射到y轴
(1) geom_bar()从
diamonds数据
集开始处理
(2) geom_bar() 使用
“数量”统计变换
对数据进行转换,
返回切割值和计
数的数据集
通过查看 stat 参数的默认值,你可以知道几何对象函数使用了哪种统计变换。例
如, ?geom_bar 显示出 stat 的默认值是 count,这说明 geom_bar() 使用 stat_count() 函数
进行统计变换。 stat_count() 在文档中与 geom_bar() 位于同一页,如果继续向下看,你可
以发现名为“Computed variables”的一节,它告诉我们 stat_count() 会计算出两个新变
量: count 和 prop。
通常来说,几何对象函数和统计变换函数可以互换使用。例如,你可以使用 stat_count()
替换 geom_bar() 来重新生成前面那张图:
ggplot(data = diamonds) +
stat_count(mapping = aes(x = cut))
可以这样做的原因是,每个几何对象函数都有一个默认统计变换,每个统计变换函数都有
一个默认几何对象。一般情况下,这意味着你在使用几何对象函数时不用担心底层的统计
变换。想要显式使用某种统计变换的 3 个原因如下。
• 你可能想要覆盖默认的统计变换。在以下代码中,我们将 geom_bar() 函数的统计变换
从计数(默认值)修改为标识。这样我们就可以将条形的高度映射为 y 轴变量的初始值。
遗憾的是,当随意说起条形图时,人们指的可能就是这种条形图,其中条形高度已经存
可以使用 stat_summary() 函数将人们的
注意力吸引到你计算出的那些摘要统计量上。 stat_summary() 函数为 x 的每个唯一值计
算 y 值的摘要统计:
ggplot(data = diamonds) +
stat_summary(
mapping = aes(x = cut, y = depth),
在于数据中,而不是像前一个图一样,条形
暂无数据