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

如何在Plotly柱状图中同时显示数值与百分比?

Plotly柱状图显示数值与百分比的实现方案

要在柱状图的每个柱子旁同时展示数值和百分比,需手动计算每个柱子数值占对应系列总和的比例,再通过text参数配置显示格式,以下是具体修改方案:

完整修改代码

import pandas as pd
import plotly.graph_objects as go

data = {'bin': [1, 2, 1, 2, 3], 'id': [1, 2, 3, 3, 3], 'type': [0, 1, 1, 1, 0]}
df = pd.DataFrame(data=data)
df1 = df[df['type']==0]
df2 = df[df['type']==1]

dfs = {"df1" : df1, "df2" : df2}

fig = go.Figure(layout=go.Layout(
    font=dict(family="Franklin Gothic", size=12), 
    height=1000, 
    width=1000
))

for series_name, tmp_df in dfs.items():
    grouped_data = tmp_df.groupby(['bin'])['id'].nunique()
    x_vals = grouped_data.index
    y_vals = grouped_data.values
    total = y_vals.sum()
    
    # 分两行显示:数值在上,百分比在下
    display_text = [f"{val}<br>{(val/total)*100:.1f}%" for val in y_vals]
    # 若需同一行显示,替换为下面这行:
    # display_text = [f"{val} ({(val/total)*100:.1f}%)" for val in y_vals]
    
    fig.add_trace(go.Bar(
        x=x_vals,
        y=y_vals,
        name=series_name,
        text=display_text,
        textposition='outside'
    ))

fig.update_layout(barmode='group')
fig.show()

核心修改说明

  • 手动计算百分比:柱状图不会像饼图自动生成百分比,需先计算当前系列的总数值,再算出每个柱子的占比
  • 配置显示文本:通过text参数传入预先组合好的字符串列表,可自由选择分两行或同一行的格式
  • 调整文本位置:textposition='outside'确保文本显示在柱子外侧,避免被柱子遮挡

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:03:19