使用 ggplot2 进行高级绘图-- 分组

为了理解数据,在一个图中画出两个或更多组的观察值通常是很有帮助的。在 R 中,组通常 用分类变量的水平(因子)来定义。分组是通过 ggplot2 图将一个或多个带有诸如形状、颜色、填充、尺寸和线类型的视觉特征的分组变量来完成的。 ggplot() 声明中的 aes() 函数负责分配变量(图形的视觉特征),所以这是一个分配分组变量的自然的地方。

用分组来探讨 Salaries 数据集。数据框包含的信息是在 2008~2009 学年大学教授的薪水。变量包括 rank (助理教授、副教授、教授)、 sex (女性、男性)、 yrs.since.phd (获得博士学位年数)、 yrs.service (工龄)和 salary (以美元计的九个月薪水)。

首先 查看薪水是如何随学术等级变化的。代码:

data(Salaries, package="car")
library(ggplot2)
ggplot(data=Salaries, aes(x=salary, fill=rank)) +
  geom_density(alpha=.3)

结果分析:在同一幅图中画出了三条密度曲线(每条曲线代表一个学术等级)并用不同的颜色来区分。填充的设置有些透明 度( alpha ),使重 叠曲线不掩盖彼此。颜色也相互结合来提高加入地区的可视化。薪水随着等级的增长而增长,但是重叠比较明显,比如一些助理教授与副教授或教授的薪水相同。随着学术等级的增长,薪水的范围也在扩大。对于教授而言尤其如此,他们的收入差距很大。把这三个分布放在同一幅图上方便了组间的比较。

接下来,我们通过性别和学术等级分组,绘制获得博士学位年数与薪水的关系:

ggplot(Salaries, aes(x=yrs.since.phd, y=salary, color=rank,
                     shape=sex)) + geom_point()

结果分析:学术等级用点的颜色来表示(红色代表助理教授,绿色代表副教授,蓝色代表教授)。性别用点的形状来表示(圆形代表女性,三角形代表男性)。从图中可以看出,薪水随着毕业年数的增加而增加,但是它们之间的关系绝对不是线性的。

你可以用一个分组的条形图按学术等级和性别来可视化教授的人 数:

ggplot(Salaries, aes(x=rank, fill=sex)) +
  geom_bar(position="stack") + labs(title='position="stack"')
ggplot(Salaries, aes(x=rank, fill=sex)) +
  geom_bar(position="dodge") + labs(title='position="dodge"')
ggplot(Salaries, aes(x=rank, fill=sex)) +
  geom_bar(position="fill") + labs(title='position="fill"')

结果分析:从前两个图中可以明显看出教授的人数大于其他学术等级的人数。除此之外,女性教授的人数比女性助理教授和副教授的人数要多。第三个图表示即使女性的总数更大,但是女性教授在教授中的比重远远小于其他两组。

使用ggplot2进行高级绘图--添加光滑曲线

我们可以使用 geom_smooth() 函数来添加一系列的平滑曲线和和置信区域。函数的参数参见 表。

geom_smooth() 函数

使用 Salaries 数据集,我们先检验博士毕业年数和薪水之间的关系。在这个例子中,我们可以使用带有 95% 置信区间的非参数光滑曲线( loess )。暂时忽略性别和学术等级。代码如下

library(ggplot2)
ggplot(data=Salaries, aes(x=yrs.since.phd, y=salary)) +
  geom_smooth() + geom_point()

结果分析:图形显示经验和薪水之间不是线性的关系,至少在毕业时间很长的时候是这样。

按性别拟合一个二次多项式回归(一个弯曲):

ggplot(data=Salaries, aes(x=yrs.since.phd, y=salary,
                          linetype=sex, shape=sex, color=sex)) +
  geom_smooth(method=lm, formula=y~poly(x,2),
              se=FALSE, size=1) +
  geom_point(size=2)

结果分析:置信界限被抑制( se=FALSE )来简化图。性别由颜色、符号形状和线条类型来区分。对男性来说,曲线从 0 增加至约 30 年然后下降。对女性来说,拟合曲线从 0 40 年一直呈上升趋势。在数据集中没有女性获得博士学位超过 40 年。对于数据集中的大部分范围,男性能拿到更高的薪水。

本文来自博客园,作者: zhang-X ,转载请注明原文链接: https://www.cnblogs.com/YY-zhang/p/15154104.html