如何基于百分比值使用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
相关产品推荐
相关产品推荐

