在 Vega-lite 中转换数据
Transforming data in Vega-lite
我有一个数据集,每行有多个 "values",例如:
"data": {
"values": [
{"date": "2020-01-01", "red":1, "green": 2},
{"date": "2020-01-02", "red":3, "green": 4},
{"date": "2020-01-03", "red":5, "green": 3},
]}
根据我对条形图的理解,每个条形图都需要自己的 "row"。
有没有一种内置的方法可以在 Vega Lite 中转置上述数据并创建一个条形图(红色和绿色堆叠在一起,这样它在 1/1 上总共有 3 个,在 1/2 上有 7 个,在 1/3 上有 8 个等等)?
非常感谢您的帮助,
J
是的,这正是 Fold Transform is designed for. For example (vega editor):
{
"data": {
"values": [
{"date": "2020-01-01T00:00:00", "red": 1, "green": 2},
{"date": "2020-01-02T00:00:00", "red": 3, "green": 4},
{"date": "2020-01-03T00:00:00", "red": 5, "green": 3}
]
},
"transform": [{"fold": ["red", "green"], "as": ["color", "value"]}],
"mark": "bar",
"encoding": {
"x": {"field": "date", "type": "ordinal", "timeUnit": "yearmonthdate"},
"y": {"type": "quantitative", "field": "value"},
"color": {"field": "color", "type": "nominal", "scale": null}
}
}
一些注意事项:
- 我将您的日期更改为 ISO 格式,因为这在 Vega-Lite 中效果最好。 Javascript 日期解析行为因浏览器而异,但所有浏览器都一致地解析 ISO。
- 设置
"scale": null
会导致从数据中提取颜色,而不是生成从数据值到色标的映射。
我有一个数据集,每行有多个 "values",例如:
"data": {
"values": [
{"date": "2020-01-01", "red":1, "green": 2},
{"date": "2020-01-02", "red":3, "green": 4},
{"date": "2020-01-03", "red":5, "green": 3},
]}
根据我对条形图的理解,每个条形图都需要自己的 "row"。 有没有一种内置的方法可以在 Vega Lite 中转置上述数据并创建一个条形图(红色和绿色堆叠在一起,这样它在 1/1 上总共有 3 个,在 1/2 上有 7 个,在 1/3 上有 8 个等等)?
非常感谢您的帮助, J
是的,这正是 Fold Transform is designed for. For example (vega editor):
{
"data": {
"values": [
{"date": "2020-01-01T00:00:00", "red": 1, "green": 2},
{"date": "2020-01-02T00:00:00", "red": 3, "green": 4},
{"date": "2020-01-03T00:00:00", "red": 5, "green": 3}
]
},
"transform": [{"fold": ["red", "green"], "as": ["color", "value"]}],
"mark": "bar",
"encoding": {
"x": {"field": "date", "type": "ordinal", "timeUnit": "yearmonthdate"},
"y": {"type": "quantitative", "field": "value"},
"color": {"field": "color", "type": "nominal", "scale": null}
}
}
一些注意事项:
- 我将您的日期更改为 ISO 格式,因为这在 Vega-Lite 中效果最好。 Javascript 日期解析行为因浏览器而异,但所有浏览器都一致地解析 ISO。
- 设置
"scale": null
会导致从数据中提取颜色,而不是生成从数据值到色标的映射。