使用
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