使用ggplot2进行高级绘图--分组、添加光滑曲线
使用ggplot2进行高级绘图--分组
为了理解数据,在一个图中画出两个或更多组的观察值通常是很有帮助的。在R中,组通常用分类变量的水平(因子)来定义。分组是通过ggplot2图将一个或多个带有诸如形状、颜色、填充、尺寸和线类型的视觉特征的分组变量来完成的。ggplot()声明中的aes()函数负责分配变量(图形的视觉特征),所以这是一个分配分组变量的自然的地方。
用分组来探讨Salaries数据集。数据框包含的信息是在2008~2009学年大学教授的薪水。变量包括rank(助理教授、副教授、教授)、sex(女性、男性)、yrs.since.phd(获得博士学位年数)、yrs.service(工龄)和salary(以美元计的九个月薪水)。
首先查看薪水是如何随学术等级变化的。代码:
1 2 3 4 5 6 7 | data (Salaries, package= "car" ) library (ggplot2) ggplot (data=Salaries, aes (x=salary, fill=rank)) + geom_density (alpha=.3) |
结果分析:在同一幅图中画出了三条密度曲线(每条曲线代表一个学术等级)并用不同的颜色来区分。填充的设置有些透明度(alpha),使重叠曲线不掩盖彼此。颜色也相互结合来提高加入地区的可视化。薪水随着等级的增长而增长,但是重叠比较明显,比如一些助理教授与副教授或教授的薪水相同。随着学术等级的增长,薪水的范围也在扩大。对于教授而言尤其如此,他们的收入差距很大。把这三个分布放在同一幅图上方便了组间的比较。
接下来,我们通过性别和学术等级分组,绘制获得博士学位年数与薪水的关系:
1 2 3 | ggplot (Salaries, aes (x=yrs.since.phd, y=salary, color=rank, shape=sex)) + geom_point () |
结果分析:学术等级用点的颜色来表示(红色代表助理教授,绿色代表副教授,蓝色代表教授)。性别用点的形状来表示(圆形代表女性,三角形代表男性)。从图中可以看出,薪水随着毕业年数的增加而增加,但是它们之间的关系绝对不是线性的。
你可以用一个分组的条形图按学术等级和性别来可视化教授的人数:
1 2 3 | ggplot (Salaries, aes (x=rank, fill=sex)) + geom_bar (position= "stack" ) + labs (title= 'position="stack"' ) |
1 2 3 | ggplot (Salaries, aes (x=rank, fill=sex)) + geom_bar (position= "dodge" ) + labs (title= 'position="dodge"' ) |
1 2 3 | ggplot (Salaries, aes (x=rank, fill=sex)) + geom_bar (position= "fill" ) + labs (title= 'position="fill"' ) |
结果分析:从前两个图中可以明显看出教授的人数大于其他学术等级的人数。除此之外,女性教授的人数比女性助理教授和副教授的人数要多。第三个图表示即使女性的总数更大,但是女性教授在教授中的比重远远小于其他两组。
使用ggplot2进行高级绘图--添加光滑曲线
我们可以使用geom_smooth()函数来添加一系列的平滑曲线和和置信区域。函数的参数参见下表。
geom_smooth()函数
使用Salaries数据集,我们先检验博士毕业年数和薪水之间的关系。在这个例子中,我们可以使用带有95%置信区间的非参数光滑曲线(loess)。暂时忽略性别和学术等级。代码如下:
1 2 3 4 5 | library (ggplot2) ggplot (data=Salaries, aes (x=yrs.since.phd, y=salary)) + geom_smooth () + geom_point () |
结果分析:图形显示经验和薪水之间不是线性的关系,至少在毕业时间很长的时候是这样。
按性别拟合一个二次多项式回归(一个弯曲):
1 2 3 4 5 6 7 8 9 | 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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~