有没有办法在 vega 重复图中的 vega 表达式中使用图号/标识符?
Posted
技术标签:
【中文标题】有没有办法在 vega 重复图中的 vega 表达式中使用图号/标识符?【英文标题】:Is there a way to use plot number/identifier in a vega expression in vega repeat plot? 【发布时间】:2019-10-10 14:29:25 【问题描述】:我想使用 vega-lite 制作一个小的倍数图表,显示一系列状态的进展。每个单独的图都包含相同的一组地理点,我希望根据第三个变量着色,具体取决于它在系列中的哪个图。
是否可以使用 vega-lite 根据基于系列中特定倍数位置的规则为点着色?
例如,在多个 1 中,我想将所有值 == 1 的点着色为红色,其余为灰色;在多个 2 中,我想将所有值 == 2 的点着色为红色,其余为灰色;等等等等
到目前为止,我已经尝试在 vega 中设置 repeat
图表(facet
不好,因为我需要每个图中的所有数据)然后在颜色编码上使用条件:
"color":
"condition":
"test": "datum.rdb == ???",
"value": "#ff0000"
,
"value":"#aaaaaa" // grey if condition not met
但我不知道 ???
应该是什么才能获得倍数内每个地块的编号或标识符。
【问题讨论】:
【参考方案1】:最简单的方法可能是通过分面层图。这个想法是,您将每个面板中的整个数据集在背景中以灰色绘制,并在其上叠加相同数据集的副本(按颜色分面)。
这是一个使用汽车数据集 (vega editor link) 的示例:
"data": "url": "data/cars.json",
"facet": "type": "nominal", "field": "Origin",
"columns": 3,
"spec":
"encoding":
"x": "type": "quantitative", "field": "Horsepower",
"y": "type": "quantitative", "field": "Miles_per_Gallon"
,
"layer": [
"data": "url": "data/cars.json",
"mark": "type": "point", "color": "lightgray"
,
"mark": "point",
"encoding": "color": "type": "nominal", "field": "Origin"
]
请注意,数据在两个地方指定:背景层指定完整数据集,而前景层从顶层继承分面数据集。
【讨论】:
啊,是的,我没有意识到可以在这样的多个地方指定数据。这正是我想要的。非常感谢。以上是关于有没有办法在 vega 重复图中的 vega 表达式中使用图号/标识符?的主要内容,如果未能解决你的问题,请参考以下文章