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

为Altair中的自定义误差带图表添加图例

给Altair线条+误差带图表添加图例的方法

没问题,我来帮你搞定这个图例添加的事儿!要让你的线条(中位数)和误差带(90%置信区间)拥有清晰的图例说明,关键是给两个图表元素分别设置对应的编码,让Altair自动识别并生成统一的图例。下面是修改后的完整代码,以及对应的解释:

修改后的完整代码

import altair as alt
import pandas as pd
import numpy as np

x = np.random.normal(100,5,100)
epsilon = 10
data = pd.DataFrame({
    'x': x,
    'lower': x - epsilon,
    'upper': x + epsilon
}).reset_index()

# 绘制代表中位数的线条,绑定图例标签
line = alt.Chart(data).mark_line(color='darkblue').encode(
    x='index',
    y='x',
    color=alt.Color('中位数:N', 
                    scale=alt.Scale(range=['darkblue']),
                    legend=alt.Legend(title='统计说明'))
)

# 绘制代表90%置信区间的误差带,绑定图例标签
band = alt.Chart(data).mark_area(opacity=0.5, color='lightblue').encode(
    x='index',
    y='lower',
    y2='upper',
    fill=alt.Fill('90%置信区间:N', 
                  scale=alt.Scale(range=['lightblue']),
                  legend=alt.Legend(title=''))
)

# 组合图表并合并图例
(band + line).resolve_legend(
    color="independent",
    fill="independent"
)

关键修改说明

  • 绑定图例标签:给线条用color编码、误差带用fill编码,分别指定图例显示的标签(中位数:N和90%置信区间:N),这里的:N表示这是名义型变量,不需要映射数据,只是用来生成图例条目。
  • 统一颜色样式:通过scale=alt.Scale(range=[...])固定图表元素和图例的颜色,确保视觉上一致。
  • 合并图例:用resolve_legend()方法将线条和误差带的图例合并成一个,避免出现多个重复的标题,让布局更整洁。

你可以根据需求调整颜色、透明度或者图例标题的文本,比如把darkblue换成#2c3e50这类自定义色值,或者修改legend=alt.Legend(title='')里的标题内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 03:47:32