我正在尝试通过 vega lite 创建一个图表,我想绘制两条线,其中一条线代表实际数据值,另一条线应显示一周前的值,即周复一周的叠加。
例如输入数据如下:
日期 | 每日总浏览量 |
---|---|
2025-01-20 | 100 |
2025-01-19 | 200 |
2025-01-18 | 300 |
2025-01-17 | 400 |
2025-01-16 | 500 |
2025-01-15 | 600 |
2025-01-14 | 700 |
2025-01-13 | 900 |
2025-01-12 | 1000 |
2025-01-11 | 1100 |
然后,vega lite 生成的转换数据应如下所示:
日期 | 每日总浏览量 | 魔兽世界 daily_total_viewers |
---|---|---|
2025-01-20 | 100 | 900 |
2025-01-19 | 200 | 1000 |
2025-01-18 | 300 | 1100 |
2025-01-17 | 400 | |
2025-01-16 | 500 | |
2025-01-15 | 600 | |
2025-01-14 | 700 | |
2025-01-13 | 900 | |
2025-01-12 | 1000 | |
2025-01-11 | 1100 |
为了使用 vega lite 规范实现这种行为,目前我正在使用查找转换。请参阅以下规范:
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"data": {
"values": [
{"date": "2025-01-20", "daily_total_viewer": 100},
{"date": "2025-01-19", "daily_total_viewer": 200},
{"date": "2025-01-18", "daily_total_viewer": 300},
{"date": "2025-01-17", "daily_total_viewer": 400},
{"date": "2025-01-16", "daily_total_viewer": 500},
{"date": "2025-01-15", "daily_total_viewer": 600},
{"date": "2025-01-14", "daily_total_viewer": 700},
{"date": "2025-01-13", "daily_total_viewer": 900},
{"date": "2025-01-12", "daily_total_viewer": 1000},
{"date": "2025-01-11", "daily_total_viewer": 1100}
]
},
"transform": [
{
"calculate": "datetime(datum.date) - 7 * 24 * 60 * 60 * 1000",
"as": "previous_week_date"
},
{
"lookup": "previous_week_date",
"from": {
"data": {
"values": [
{"date": "2025-01-20", "daily_total_viewer": 100},
{"date": "2025-01-19", "daily_total_viewer": 200},
{"date": "2025-01-18", "daily_total_viewer": 300},
{"date": "2025-01-17", "daily_total_viewer": 400},
{"date": "2025-01-16", "daily_total_viewer": 500},
{"date": "2025-01-15", "daily_total_viewer": 600},
{"date": "2025-01-14", "daily_total_viewer": 700},
{"date": "2025-01-13", "daily_total_viewer": 900},
{"date": "2025-01-12", "daily_total_viewer": 1000},
{"date": "2025-01-11", "daily_total_viewer": 1100}
]
},
"key": "date",
"fields": ["daily_total_viewer"]
},
"as": ["WOW_daily_total_viewer"]
}
],
"layer": [
{
"mark": "line",
"encoding": {
"x": {"field": "date", "type": "temporal", "title": "Date"},
"y": {"field": "daily_total_viewer", "type": "quantitative"},
"color": {"value": "blue", "title": "Current Week"}
}
},
{
"mark": "line",
"encoding": {
"x": {"field": "date", "type": "temporal", "title": "Date"},
"y": {"field": "WOW_daily_total_viewer", "type": "quantitative"},
"color": {"value": "orange", "title": "Previous Week"}
}
}
]
}
我们是否可以通过 vega lite 进行一些简单的转换,而不使用查找来实现相同的行为?
这里使用更简单的窗口变换。