如何为各职位绘制2020-2022年分年度箱线图(禁用Makie包)
替代解决方案:用Plots.jl+StatsPlots.jl绘制分职位年度箱线图
步骤1:安装无依赖问题的绘图包
优先选择安装门槛低、依赖简单的Plots生态包,GR后端默认自带,基本不会出现安装失败:
using Pkg Pkg.add(["Plots", "StatsPlots", "DataFrames"])
步骤2:单职位年度箱线图绘制
假设你的数据集已整理为DataFrame格式(列包含职位、年份、薪资/目标数值列),按职位循环生成对应年度箱线图:
using DataFrames, StatsPlots # 假设数据已加载为df,示例结构: # df = DataFrame(职位 = ["职位A", "职位A", ...], 年份 = [2020, 2021, ...], 薪资 = [10000, 12000, ...]) # 遍历每个职位生成独立图表 for job in unique(df.职位) job_subset = filter(row -> row.职位 == job, df) @df job_subset boxplot(:年份, :薪资, title = "$job 年度数据箱线图", xlabel = "年份", ylabel = "薪资", legend = false, color = [:skyblue :lightgreen :coral]) savefig("$job_年度箱线图.png") # 自动保存每个职位的图表 end
步骤3:多职位子图汇总展示
如果需要把所有职位的年度箱线图放在同一张画布的子图里:
jobs = unique(df.职位) total_jobs = length(jobs) # 按职位数量设置画布布局 p = plot(layout=(total_jobs, 1), size=(800, 400*total_jobs)) for (idx, job) in enumerate(jobs) job_subset = filter(row -> row.职位 == job, df) @df job_subset boxplot!(p[idx], :年份, :薪资, title = job, xlabel = "年份", ylabel = "薪资", legend = false, color = [:skyblue :lightgreen :coral]) end display(p) savefig("所有职位年度箱线图汇总.png")
备选方案:用Gadfly.jl绘制
如果Plots依然有安装问题,可尝试更轻量的Gadfly:
Pkg.add("Gadfly") using Gadfly, DataFrames for job in unique(df.职位) job_subset = filter(row -> row.职位 == job, df) plot_obj = Gadfly.plot(job_subset, x=:年份, y=:薪资, Geom.boxplot(), Guide.title("$job 年度数据箱线图"), Guide.xlabel("年份"), Guide.ylabel("薪资")) draw(PNG("$job_年度箱线图.png", 8inch, 5inch), plot_obj) end
内容的提问来源于stack exchange,提问作者hahaha
相关产品推荐
相关产品推荐

