You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Julia中为各JOB类别绘制Pie Gauge Chart(环形仪表盘)

在Julia中实现环形仪表盘(Pie Gauge Chart)

1. 加载依赖包

先安装并加载所需工具包,Plots负责绘图,DataFrames用于数据格式转换:

using Plots, DataFrames
gr() # 选用GR后端,渲染稳定且适配极坐标需求

2. 数据预处理

将你提供的宽格式数据转换为长格式,方便批量处理每个JOB类别的进度数据:

# 构造原始数据集
raw_data = DataFrame(
    BR = ["BR1", "BR2", "BR3"],
    PROG_JOB1 = [0.5, 0.3, 0.6],
    PROG_JOB2 = [0.4, 0.2, 0.5],
    PROG_JOB3 = [0.5, 0.6, 0.3]
)

# 转长格式,便于遍历每个BR-JOB组合
long_data = stack(raw_data, Not(:BR), variable_name=:Job, value_name=:Progress)

3. 定义环形仪表盘绘制函数

基于极坐标投影实现核心绘制逻辑,通过分段条形图模拟环形进度:

function draw_pie_gauge(progress::Float64, title::String; progress_color=:steelblue, bg_color=:lightgray)
    # 计算进度对应的角度范围(0到2π*进度占比)
    progress_angle = 2π * progress
    # 背景环形对应的剩余角度
    bg_angle = 2π - progress_angle

    # 极坐标下绘制条形图,bar_width控制环形厚度
    gauge_plot = bar(
        [0, progress_angle],
        [1, 1],
        proj=:polar,
        bar_width=1,
        color=[bg_color, progress_color],
        legend=false,
        title=title,
        titlefontsize=10
    )

    # 隐藏冗余坐标轴与刻度,只保留环形视觉
    xticks!(gauge_plot, [])
    yticks!(gauge_plot, [])
    ylims!(gauge_plot, 0, 2) # 控制环形整体大小

    return gauge_plot
end

4. 批量生成并排列仪表盘

遍历所有BR和JOB组合,生成子图并排列成网格布局:

# 获取所有唯一的BR和JOB标识
unique_brs = unique(long_data.BR)
unique_jobs = unique(long_data.Job)

# 创建网格布局,行数对应BR数量,列数对应JOB数量
plot_layout = @layout [grid(length(unique_brs), length(unique_jobs))]
final_plot = plot(layout=plot_layout, size=(800, 600))

# 逐个绘制仪表盘并添加到子图
for (row_idx, br) in enumerate(unique_brs)
    for (col_idx, job) in enumerate(unique_jobs)
        # 提取当前组合的进度值
        current_progress = long_data[(long_data.BR .== br) .& (long_data.Job .== job), :Progress][1]
        # 设置子图标题,显示进度百分比
        subplot_title = "$br - $job\n进度: $(round(current_progress*100))%"
        # 生成仪表盘并添加到对应子图位置
        gauge = draw_pie_gauge(current_progress, subplot_title)
        plot!(final_plot[row_idx, col_idx], gauge)
    end
end

# 展示最终绘图结果
display(final_plot)

自定义说明

  • 可通过调整bar_width参数改变环形的厚度
  • 修改progress_color和bg_color参数自定义进度条与背景的颜色
  • 布局可根据需求调整,比如改为grid(1, length(unique_jobs))实现横向排列

内容的提问来源于stack exchange,提问作者GoFORIT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 18:20:33