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

Plotly分组柱状图:为不同数据组设置独立文本标签

解决分组柱状图分组件指定标签的问题

要实现y1组用y1_labels、y2组用y2_labels作为专属标签,有两种常用方法:

方法一:直接修改Plotly生成的Trace

先创建基础分组柱状图(不指定全局text参数),再为每个对应trace单独设置文本列:

# 转换为Pandas数据框
df_pd = df.toPandas()

# 创建基础分组柱状图
fig = px.bar(data_frame=df_pd, x='x', y=['y1','y2'], barmode='group')

# 为第一个trace(对应y1)设置y1_labels
fig.data[0].text = df_pd['y1_labels']
# 为第二个trace(对应y2)设置y2_labels
fig.data[1].text = df_pd['y2_labels']

# 设置文本显示位置(可选,比如柱子外侧)
fig.update_traces(textposition='outside')

fig.show()

方法二:重塑数据为长格式(更符合Plotly Express设计思路)

将宽格式数据转换为长格式,把标签与对应数值绑定后,直接在绘图时指定text列:

df_pd = df.toPandas()

# 重塑数据:将y1、y2列转为分类,同时关联对应标签
melted_df = df_pd.melt(
    id_vars='x',
    value_vars=['y1', 'y2'],
    var_name='指标类型',
    value_name='数值'
)
# 匹配对应标签
melted_df['标签'] = melted_df.apply(
    lambda row: row['y1_labels'] if row['指标类型'] == 'y1' else row['y2_labels'],
    axis=1
)

# 创建分组柱状图,直接指定text为匹配后的标签列
fig = px.bar(
    melted_df,
    x='x',
    y='数值',
    color='指标类型',
    barmode='group',
    text='标签'
)
fig.update_traces(textposition='outside')
fig.show()

两种方法都能实现需求:方法一适合快速调整已有的图表代码;方法二更灵活,后续新增y3、y3_labels时只需修改少量代码即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:05:19