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

Plotly Express柱状图:如何汇总显示text值?

实现Plotly柱状图的分组汇总文本显示

当然可以实现!你现在的问题是直接用原始数据绘图,所以每个数据点都会显示对应的文本。要让每个分组柱子顶部显示汇总值(比如求和),关键是先对数据做分组聚合处理,再用聚合后的数据集绘图。

具体步骤:

  1. 转换数据类型:原始数据里的LowValue是字符串格式,先转成数值类型(整数),避免求和时出现字符串拼接的问题。
  2. 分组聚合求和:按Make和Dimension这两个维度分组,对LowValue求和,得到每个分组的汇总值。
  3. 用汇总数据绘图:基于聚合后的DataFrame绘制柱状图,此时text参数就会显示每个分组的总和。

完整代码示例:

import plotly.express as px
import pandas as pd

# 原始数据
df = pd.DataFrame({
    'Make':['Mercedes', 'BMW', 'Mercedes', 'Mercedes', 'Chrysler', 'Chrysler', 'Chrysler', 'Chrysler', 'BMW', 'Chrysler', 'BMW', 'Mercedes', 'BMW', 'Mercedes'],
    'Dimension':['Styling', 'Styling', 'Price', 'Styling', 'MPG', 'MPG', 'Styling', 'Styling', 'MPG', 'MPG', 'Price', 'Price', 'Styling', 'MPG'],
    'Country':['USA', 'USA', 'USA', 'Germany', 'USA', 'USA', 'USA', 'England', 'Germany', 'USA', 'Germany', 'Poland', 'Italy', 'USA'],
    'LowValue':['64', '61', '70', '65', '59', '68', '63', '57', '58', '55', '69', '63', '69', '61'],
    'HighValue':['82', '95', '93', '95', '87', '93', '85', '85', '95', '92', '83', '87', '80', '80']
})

# 步骤1:转换LowValue为整数类型
df['LowValue'] = df['LowValue'].astype(int)

# 步骤2:按Make和Dimension分组,求和LowValue
df_summary = df.groupby(['Make', 'Dimension'])['LowValue'].sum().reset_index()

# 步骤3:用汇总数据绘制柱状图
fig = px.bar(
    df_summary,
    x='Make',
    y='LowValue',
    color='Dimension',
    barmode='group',
    text='LowValue'
)

# 可选:调整文本位置让它更美观
fig.update_traces(textposition='outside')

fig.show()

效果说明:

运行这段代码后,你会看到:

  • Mercedes的Styling柱子顶部显示129(64+65的和)
  • Chrysler的MPG柱子顶部显示243(59+68+55+61的和)
  • 所有分组都只会显示对应维度的汇总值,而不是原始的单个数据点数值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 21:12:38