首页 > 解决方案 > 如何处理具有太多条目以匹配固定图表高度的分类图例?

问题描述

我在包含过滤器的仪表板上使用 Vega-Lite 图表模板(使用 vega-embed)来控制正在显示的数据的各个方面。图表包含在定义大小的小部件中,""autosize": {"type": "fit", "contains": "padding"}用于控制图表大小。

其中一个图表给我带来了一些问题 - 堆积条形图显示了按公司分组的时间计数。在少数情况下,将数据带入仪表板的公司过多,导致图例被切断。EG仅显示 50 多个图例条目中的约 25 个

有什么方法可以让这个传说更有用吗?我正在使用某种方式的工具提示,但除了禁用图例(被产品经理拒绝)之外,我对如何继续感到困惑。我试图将一些条件逻辑放在一起,以便 if distinct count >= 25 then "legend": {"columns": 2},但在完成这项工作时没有任何运气。

是否有人对适用于 25 个以上图例条目和 5 个实例的通用解决方案有任何想法?让图例可滚动将是理想的解决方案,同样,限制图例条目的数量(其余部分放入other)也是我想到但不知道如何在 vega-lite 中执行的可行替代方案。

提前致谢!

PS 我不是网络开发人员,只是一名分析师,他负责编写 vega-lite 规范,因此对缺乏有关如何部署的技术细节表示歉意!

标签: legendvega-lite

解决方案


您可以legend在相关编码的参​​数中指定列数。例如:

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

np.random.seed(4567)

df = pd.DataFrame({
    'x': np.random.randn(100),
    'y': np.random.randn(100),
    'category': np.random.choice(list('ABCDEFGHIJKLMNOPQRSTUVWXYZ'), 100)
})

alt.Chart(df).mark_point().encode(
    x='x',
    y='y',
    color=alt.Color('category', legend=alt.Legend(columns=3))
)

在此处输入图像描述


推荐阅读