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

Plotly Go分类直方图添加自定义图例及分色问题求助

解决Plotly Graph Objects直方图的图例与颜色问题

我来帮你搞定这个问题!你之前的代码把所有品种的数据塞进了同一个Histogram trace里,自然只会显示一个统一颜色的柱子和单个图例项。要实现每个品种独立图例+不同颜色,我们需要为每个品种单独创建trace,下面是可直接运行的修改版代码:

import plotly.graph_objects as go
import pandas as pd

# 读取鸢尾花数据集
df = pd.read_csv('https://gist.githubusercontent.com/netj/8836201/raw/6f9306ad21398ea43cba4f7d537619d0e07d5ae3/iris.csv')

fig = go.Figure()

# 遍历每个品种,单独创建trace
for variety in df['variety'].unique():
    # 过滤当前品种的数据
    subset = df[df['variety'] == variety]
    # 添加直方图trace,name参数指定图例名称
    fig.add_trace(go.Histogram(
        x=subset['variety'],
        name=variety,  # 这是生成独立图例的关键
        histfunc="count"
    ))

# 调整布局,让图表更清晰
fig.update_layout(
    title='鸢尾花品种分布',
    xaxis_title='品种',
    yaxis_title='数量',
    barmode='group'  # 设置柱子分组显示(这里每个品种只有一个柱子,也可以用'overlay',效果类似)
)

fig.show()

关键修改点说明:

  • 单独创建trace:通过循环每个品种,为每个品种生成独立的Histogram trace,这样Plotly会自动为每个trace分配不同颜色,并生成对应的图例项
  • name参数:每个trace的name设置为品种名称,这是图例正确显示的核心,点击图例还可以切换对应柱子的显示/隐藏,非常适合Dash交互场景
  • 布局优化:添加标题和轴标签,设置barmode='group'确保每个品种的柱子独立展示(因为每个品种只有一个数据点,这里用overlay效果也一样)

如果你的需求只是展示类别计数,其实也可以用Plotly Express快速实现(代码更简洁),但既然你需要用Graph Objects适配Dash,上面的方法完全可以满足需求,而且交互性和扩展性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 09:02:44