当前位置: 首页 > article >正文

R语言统计分析——ggplot2绘图3——分组

参考资料:R语言实战【第2版】

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

        下面让我们对Salaries数据集进行探索:数据框包含的信息是在2008~2009学年大学教授的薪水。变量包括rank(助理教授、副教授、教授)、sex(女性、男性)、yrs.since.phd(获得博士学位年数)、rs.service(工龄)和salary(以美元计的九个月薪水)。

        首先,我们可以查看薪水是如何随学术等级变化的。代码如下:

# 加载car包,使用里面的Salaries数据集
library(car)
# 加载ggplot2包
library(ggplot2)
# 绘图
ggplot(Salaries,aes(x=salary,fill=rank))+
  geom_density(alpha=0.3)

        如上图所示,在同一幅图中画出了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"')

        注意,第三个图中的y轴标签是错误的,它应该是比例(proportion)而不是数量(count),我们可以通过添加y="proportion"参数到labs()函数中来解决,如下:

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

http://www.kler.cn/a/525321.html

相关文章:

  • 解锁微服务:五大进阶业务场景深度剖析
  • 前端-Rollup
  • 動態住宅IP提升網站訪問成功率
  • 网站如何正式上线(运维详解)
  • 剑指 Offer II 008. 和大于等于 target 的最短子数组
  • 设计模式的艺术-策略模式
  • 18.Word:数据库培训课程❗【34】
  • 无心剑七绝《经纬岁华》
  • llama.cpp LLM_ARCH_DEEPSEEK and LLM_ARCH_DEEPSEEK2
  • Tailwind CSS - Tailwind CSS 引入(安装、初始化、配置、引入、构建、使用 Tailwind CSS)
  • DeepSeek-R1:通过强化学习激励大型语言模型(LLMs)的推理能力
  • 代码随想录算法训练营第34天| 动态规划:01背包理论基础(二维和一维)、416. 分割等和子集
  • 【实践案例】使用Dify构建企业知识库
  • 探索Linux中的进程控制:从启动到退出的背后原理
  • 使用 Iptables 实现网络安全策略:从入门到精通
  • Python 梯度下降法(一):Gradient Descent
  • 10.8 FileSystemWatcher(文件监视)组件
  • k均值聚类将数据分成多个簇
  • 高级编码参数
  • 【Attention】KV Cache
  • TypeScript 学习 -类型 - 10
  • 快速提升网站收录:内容创作的艺术
  • 工具的应用——安装copilot
  • 高速PCB设计指南3——PCB 传输线和受控阻抗
  • 供应链系统设计-供应链中台系统设计(十)- 清结算中心概念片篇
  • Python3 【内置函数】:使用示例参考手册