我迷失在素食酱汁里了.我很难理解我哪里做错了.
我基本上需要两个层面:
- 所有年份的线条(" colored颜色 ":)
- 本年度(2023年)的一条红线
- 要突出显示的标记:a)最高点,b)最低点,c)同一2023过滤行上的最新点-带有文本标签显示值(见下图)
我获得了部分成功,但感觉我的编码顺序或层错误.2023年的最低温度标记不遵守过滤器转换,并且文本标签受到" colored颜色 "编码的影响:而不是2023年标记的编码.
I've attached the pbix here: TemperatureDEV_pbix
(nb: this is a large dataset, I have toggled on the "override data limit" option)
为JSON的混乱提前道歉.对于最高分和最低分,我试着用"窗口":表情.在另一次try 中,我能够使用"argmax"获得结束标记:但我无法将结束标记和最高/最低分数组合在一起.
{
"data": {"name": "dataset"},
"encoding": {
"x": {
"field": "DayOfYear",
"type": "temporal",
"axis": {
"labels": false,
"ticks": false,
"grid": false,
"title": "Day Of Year"
}
},
"y": {
"field": "Temp",
"type": "quantitative",
"scale": {"zero": false},
"title": "Temperature"
},
"color": {
"legend": null,
"field": "Year",
"type": "quantitative",
"scale": {
"reverse": false,
"range": [
"#0041C2",
"#0041C250",
"#0041C230",
"#4169E220",
"#4863A015"
]
}
}
},
"layer": [
{
"mark": {
"type": "line",
"interpolate": "monotone",
"strokeWidth": 1.5
}
},
{
"transform": [
{
"calculate": "(datum.Temp)",
"as": "2023_temp"
},
{
"filter": {
"field": "Year",
"oneOf": ["2023"]
}
}
],
"encoding": {
"x": {
"field": "DayOfYear",
"type": "temporal",
"axis": {
"labels": false,
"ticks": false,
"grid": false,
"title": "Day Of Year"
}
},
"y": {
"field": "2023_temp",
"type": "quantitative",
"scale": {"zero": false},
"title": "Temperature"
}
},
"layer": [
{
"mark": {
"type": "line",
"interpolate": "monotone",
"stroke": "crimson",
"strokeWidth": 3
},
"encoding": {
"y": {"field": "2023_temp"}
}
},
{
"mark": {
"type": "text",
"align": "left",
"dx": 5,
"size": 15,
"fontWeight": "bold",
"color": "red"
},
"encoding": {
"x": {
"aggregate": "max",
"field": "DayOfYear"
},
"y": {
"aggregate": {
"argmax": "DayOfYear"
},
"field": "2023_temp"
},
"text": {
"aggregate": {
"argmax": "DayOfYear"
},
"field": "2023_temp",
"format": ".3~s"
}
}
}
]
},
{
"transform": [
{
"window": [
{"op": "rank", "as": "jeff"}
],
"sort": [
{
"field": "Temp",
"order": "descending"
}
]
},
{"filter": "datum.jeff ==1"}
],
"mark": {
"type": "point",
"shape": "triangle-down",
"size": 200,
"yOffset": -8,
"fill": "red",
"opacity": 1
},
"encoding": {
"x": {"field": "DayOfYear"},
"y": {"field": "Temp"}
}
},
{
"transform": [
{
"window": [
{
"op": "rank",
"as": "tempRank"
}
],
"sort": [
{
"field": "Temp",
"order": "ascending"
}
]
},
{
"filter": "datum.tempRank == 1"
}
],
"mark": {
"type": "point",
"shape": "circle",
"size": 200,
"yOffset": -8,
"fill": "red",
"opacity": 1,
"stroke": null
},
"encoding": {
"x": {"field": "DayOfYear"},
"y": {"field": "Temp"}
}
},
{
"layer": [
{
"transform": [
{
"calculate": "(datum.Temp)",
"as": "1979_temp"
},
{
"filter": "datum.Year == '1979'"
}
],
"mark": {
"type": "line",
"interpolate": "monotone",
"stroke": "orange",
"strokeWidth": 3
},
"encoding": {
"y": {"field": "1979_temp"}
}
}
]
}
]
}