如何用Julia基于给定薪资数据集制作清晰有效的可视化图表?
Julia数据科学薪资数据集可视化优化指南
一、数据集适配性
你参考的多维度薪资分布图表(按年份、职位分类的箱线图)完全可以用当前数据集实现。你的数据包含job_title(职位)、salary_in_usd(薪资)、work_year(年份)和experience_level(经验等级),刚好覆盖这类图表需要的分类维度、数值指标和分组维度。
二、推荐绘图包
- VegaLite.jl:你已在使用的声明式绘图库,和InMemoryDatasets兼容性极佳,可快速生成交互式、出版级图表,语法简洁易上手。
- Plots.jl + StatsPlots.jl:生态完善,支持多种绘图后端(GR、Plotly等),StatsPlots专门提供箱线图、小提琴图等统计类图表,适合快速数据探索。
- Makie.jl:高性能、定制化极强的绘图库,支持静态/交互式图表,适合需要精细化调整的复杂可视化场景。
三、具体实现示例
用VegaLite制作多维度箱线图
using VegaLite, InMemoryDatasets # 简化职位分类,避免X轴拥挤 transform!(new, :job_title, by = x -> begin occursin("Scientist", x) && return "Data Scientist" occursin("Engineer", x) && return "Data Engineer" occursin("Analyst", x) && return "Data Analyst" occursin("Manager", x) && return "Data Manager" return "Other" end, renamecols=:simplified_job) # 绘制分年份、分职位的薪资箱线图,按经验等级着色 new |> @vlplot( mark=:boxplot, x=:simplified_job, y=:salary_in_usd, column=:work_year, color=:experience_level, title="Data Science Salaries by Job, Year & Experience", width=220, height=450, config={ boxplot={extent=1.5}, # 控制箱线图须的范围,过滤极端值 axis={labelFontSize=10, titleFontSize=12}, title={fontSize=14} } )
用StatsPlots制作静态多面板箱线图
using Plots, StatsPlots # 简化职位分类 simplified_jobs = map(new.job_title) do x occursin("Scientist", x) ? "Data Scientist" : occursin("Engineer", x) ? "Data Engineer" : occursin("Analyst", x) ? "Data Analyst" : occursin("Manager", x) ? "Data Manager" : "Other" end # 按年份分面板,绘制箱线图 @df new boxplot( simplified_jobs, :salary_in_usd, group=:experience_level, layout=length(unique(new.work_year)), title=["Salaries in $(year)" for year in sort(unique(new.work_year))], xlabel="Job Title", ylabel="Salary (USD)", legend=:topright, size=(1100, 650), palette=:viridis )
四、可视化优化要点
- 精简分类维度:原数据集
job_title细分过多,直接绘图会导致X轴拥挤,建议合并相似职位(如示例中的简化处理),或只保留样本量≥20的核心职位。 - 聚焦核心对比:保留
work_year、simplified_job、experience_level三个核心维度,避免过多信息干扰。 - 细节调整:
- 设置箱线图须的合理范围(如1.5倍四分位距),过滤极端值;
- 调整坐标轴标签、标题的字体大小,提升可读性;
- 用颜色区分经验等级,强化分组对比;
- 若做交互式图表,添加悬停提示,显示中位数、四分位数等具体统计值。
内容的提问来源于stack exchange,提问作者hahaha
相关产品推荐
相关产品推荐

