技术解析|如何绘制密度分布图

2020-04-22 17:03:53 浏览数 (1)

前言

在前几天对数据分析师与算法工程师进行岗位对比分析的文章中,我们使用了密度分布图和箱线图对薪资水平与学历对薪资的影响进行了分析,那么早起就对这两种图形的绘制方法进行解析,也借着这个机会讲一下我最喜欢的绘图包:ggplot2

密度分布图

频率分布直方图中,当样本容量充分放大时,图中的组距就会充分缩短,这时图中的阶梯折线就会演变成一条光滑的曲线,这条曲线就称为总体的密度分布曲线。这条曲线排除了由于取样不同和测量不准所带来的误差,能够精确地反映总体的分布规律,密度分布图其实就是密度分布曲线的填充。

原文的的密度分布图的绘制软件为R,为啥不用Python?研究了一圈绘制出来图形都不够好看

那么具体怎么画呢?首先把数据整理成这样?

一列是职位名称一列是对应的薪资,然后启动R读取数据并修改两个列名

代码语言:javascript复制
#读取数据
data = read.csv('gongzi.csv')
#修改列名
names(data)[1:2]<-c("professional","salary")

接着使用下面的代码加载ggplot2,并设置x轴,此时图形长这样?

接下来我们使用下面代码添加密度曲线

代码语言:javascript复制
p   geom_density()

此时虽然整出来密度曲线,但是并没有根据两个岗位进行区分,因此我们使用下面代码区分开两个岗位,注意里面函数里面color就是指定岗位

代码语言:javascript复制
p   geom_density(aes(color = professional))

OK,成功对不同岗位进行了区分,只剩下最后一步填充,并且有没有发现坐标轴是以科学计数法呈现的,我们也对这一块处理一下

代码语言:javascript复制
options(scipen=200)
p   geom_density(aes(fill = professional), alpha=0.4)   xlim(0,80000)

options(scipen=200)就是用来处理坐标轴的科学计数法,并且我们的x轴不需要那么大的范围,因此使用xlim(0,80000)来调整,这样我们就做出了漂亮的密度分布图

为了读者可以从图中读到更多信息,我们再将两个岗位的平均薪资线添加进去,首先计算两个岗位的平均薪资并创建为dataframe

接着使用下面一行命令即可

代码语言:javascript复制
p   geom_density(aes(fill = professional), alpha=0.4)   xlim(0,80000)   geom_vline(data = mean, aes(xintercept = salary,color=professional),linetype="dashed")

来看看最终效果,学会了吗

结束语

以上就是使用R绘制漂亮的密度分布图过程,我已将原始数据放在公众号后台回复招聘获取,感兴趣的读者可以利用原始数据自己使用python进行处理得到我们需要的数据格式再绘制,最后留一个问题,怎样绘制学历关于薪资的箱线图?怎样实现箱子大小根据不同样本量而变化?且看下回推文。

0 人点赞