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

如何基于百分比值使用Plotly创建符合示例的进度饼图

Plotly 实现目标进度环形饼图的实操方法

参考示例效果为无冗余元素的空心环形样式:已完成进度段用醒目色块展示,剩余进度段用浅灰色填充,环形中心标注大号进度百分比。

场景一:直接使用单值进度变量绘图

当进度值以独立整数变量定义(如x = 80表示完成80%)时,可直接通过拼接「已完成进度值+剩余进度值」的方式构造饼图数据源,核心绘图代码如下:

import plotly.graph_objects as go

# 定义进度占比变量
x = 80

fig = go.Figure(data=[go.Pie(
    # 饼图总占比固定为100%,拆分已完成、未完成两个分段
    values=[x, 100 - x],
    # 关闭悬停提示、分段标签展示
    hoverinfo="skip",
    textinfo="none",
    # 设置空心环的大小,数值越大环身越细
    hole=0.75,
    # 匹配示例配色:已完成段为亮蓝色,剩余段为浅灰色
    marker=dict(colors=["#1a73e8", "#e8eaed"], line=dict(color="#fff", width=0))
)])

# 在环形中心位置添加进度数字标注
fig.add_annotation(
    text=f"<b>{x}%</b>",
    font_size=36,
    showarrow=False
)

# 清理所有冗余布局元素
fig.update_layout(
    showlegend=False,
    margin=dict(t=30, b=30, l=30, r=30)
)

fig.show()

场景二:从指定结构的DataFrame读取进度值

当进度值存储在结构为「单progress列、第一行对应目标进度值」的DataFrame中时,只需先提取对应进度值,后续绘图逻辑与场景一完全一致,核心代码如下:

import pandas as pd
import plotly.graph_objects as go

# 对应目标结构的DataFrame(实际使用时替换为自身数据读取逻辑即可)
df = pd.DataFrame({"progress": [80]})

# 从DataFrame中提取进度值
x = df["progress"].iloc[0]

# 绘图逻辑与场景一保持一致
fig = go.Figure(data=[go.Pie(
    values=[x, 100 - x],
    hoverinfo="skip",
    textinfo="none",
    hole=0.75,
    marker=dict(colors=["#1a73e8", "#e8eaed"], line=dict(color="#fff", width=0))
)])

fig.add_annotation(
    text=f"<b>{x}%</b>",
    font_size=36,
    showarrow=False
)

fig.update_layout(
    showlegend=False,
    margin=dict(t=30, b=30, l=30, r=30)
)

fig.show()

可调参数说明

  • hole参数取值范围为0~1,可根据需求调整环形的粗细程度
  • marker.colors数组中的两个颜色值可自定义替换,适配不同视觉风格
  • add_annotation中的字体大小、样式可灵活调整,匹配最终展示要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 15:45:07