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

Altair中图例文本换行后数据丢失问题求解

解决Altair图例文本换行同时保留所有数据点的问题

问题出在textwrap.wrap()返回的是列表类型,Altair将列表视为离散分类值时,会把内容相同的列表归为同一组,导致视觉上每个类别只显示一个点(实际四个点都存在,但同组点颜色相同易被误解为合并)。

解决方法是将换行后的列表转为带换行符\n的字符串,让Altair既能识别正确分类,又能在图例中渲染换行文本:

import pandas as pd
import altair as alt
import textwrap

# Example DataFrame
df = pd.DataFrame({'point': ['a', 'b', 'c', 'd'],
                   'label': ['My super long label that is too long',
                             'Short label',
                             'My super long label that is too long',
                             'Short label'],
                    'x': [1,2,3,4],
                    'y': [1,2,3,4]})

# 将换行后的列表转为带\n的字符串
df['label_wrapped'] = df['label'].apply(lambda x: '\n'.join(textwrap.wrap(x, width=15)))

chart = alt.Chart(df).mark_circle(size=100).encode(
    x='x',
    y='y',
    color=alt.Color('label_wrapped:N', title='Label'),
)
chart

关键说明:

  • 使用'\n'.join(textwrap.wrap(...))代替直接调用textwrap.wrap(),将列表转为换行字符串,既保留了换行格式,又让Altair能正确识别分类(相同原始标签的字符串完全一致)。
  • 调整后四个数据点会正常显示,每个类别对应两个点,图例中的标签会自动按换行符换行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:12:32