legend - 如何处理具有太多条目以匹配固定图表高度的分类图例?
问题描述
我在包含过滤器的仪表板上使用 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 规范,因此对缺乏有关如何部署的技术细节表示歉意!
解决方案
您可以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))
)
推荐阅读
- python - 在 Ubuntu 中重新启动崩溃的 Python 脚本?
- typescript - Retaining strong typing with an optional parameter
- angular - 按钮单击时的反应式表单验证
- docker - 启动容器进程导致:exec:“entrypoint.sh”:$PATH 中找不到可执行文件
- python - Extract any basic math expression from arbitrary text using Python
- winapi - CreateProcess from an impersonated thread
- python-3.x - How to add another URL to the base URLs in a list?
- jpql - How do you subqueries JPQL?
- excel - 有没有办法将 Cells.Address 用作函数输入的范围(“A1:Cells.Address”)的一部分?
- java - NullPointerException when manually loading required Vulkan instance extensions