Plotly Express柱状图:如何汇总显示text值?
实现Plotly柱状图的分组汇总文本显示
当然可以实现!你现在的问题是直接用原始数据绘图,所以每个数据点都会显示对应的文本。要让每个分组柱子顶部显示汇总值(比如求和),关键是先对数据做分组聚合处理,再用聚合后的数据集绘图。
具体步骤:
- 转换数据类型:原始数据里的
LowValue是字符串格式,先转成数值类型(整数),避免求和时出现字符串拼接的问题。 - 分组聚合求和:按
Make和Dimension这两个维度分组,对LowValue求和,得到每个分组的汇总值。 - 用汇总数据绘图:基于聚合后的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
相关产品推荐
相关产品推荐

