如何处理条目过多而无法与固定图表高度匹配的类别图例?

时间:2019-10-11 15:56:08

标签: legend vega-lite

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

其中一张图表引起了我一些问题-堆积的条形图显示了按公司分组的时间范围内的一些计数。在少数情况下,将数据带入仪表板的公司太多,导致图例被切断。例如。 only ~25 of the 50+ legend entries showing

是否有某种方法可以使此图例更加有用?我正在使用某种方式的工具提示,但是没有仅仅禁用图例(产品经理拒绝),我对如何继续感到困惑。我试图将一些条件逻辑组合在一起,以便如果非重复计数> = 25则"legend": {"columns": 2},但是在完成这项工作时没有任何运气。

有人对通用解决方案有什么想法,该解决方案适用于25个以上图例条目和5个图例条目的实例吗?使图例可滚​​动将是理想的解决方案,同样,限制图例条目的数量(将其余部分合并到other中)也是我想过但不知道如何做的可行选择。素食主义者。

谢谢!

P.S。我不是网络开发人员,而是一名分析师,他接手了编写Vega-lite规范的工作,因此对缺乏有关其部署方式的技术细节深表歉意!

1 个答案:

答案 0 :(得分:0)

您可以在相关编码的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))
)

enter image description here