This is currently my code . I'm displaying two area charts showcasing the evolution of metrics in 2022 and 2023 over the months:
{
"data": {"name": "dataset"},
"transform": [
{
"calculate": "format(datum['Leaves Count 2022']/1000,'0.1f')+'k'",
"as": "l1"
},
{
"calculate": "format(datum['Leaves Count 2023']/1000,'0.1f')+'k'",
"as": "l2"
},
{
"joinaggregate": [
{
"op": "max",
"field": "Leaves Count 2022",
"as": "l1max"
},
{
"op": "max",
"field": "Leaves Count 2023",
"as": "l2max"
},
{
"op": "min",
"field": "Leaves Count 2022",
"as": "l1min"
},
{
"op": "min",
"field": "Leaves Count 2023",
"as": "l2min"
}
]
}
],
"layer": [
{
"mark": {
"type": "area",
"line": {"color": "#063970"},
"color": {
"x1": 1,
"y1": 1,
"gradient": "linear",
"stops": [
{
"offset": 0,
"color": "white"
},
{
"offset": 1,
"color": "#063970"
}
]
}
}
},
{
"mark": {
"type": "area",
"line": {"color": "#2596be"},
"color": {
"x1": 1,
"y1": 1,
"gradient": "linear",
"stops": [
{
"offset": 0,
"color": "white"
},
{
"offset": 1,
"color": "#2596be"
}
]
}
},
"encoding": {
"y": {
"field": "Leaves Count 2022",
"type": "quantitative"
}
}
},
{
"mark": {
"type": "circle",
"size": 50,
"fill": {
"expr": "datum['Leaves Count 2023'] == datum.l2max ? 'red' : datum['Leaves Count 2023'] == datum.l2min ? 'green' : '#063970'"
},
"stroke": "white",
"strokeWidth": 1
},
"encoding": {
"x": {
"field": "MONTH",
"type": "ordinal",
"sort": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
},
"y": {
"field": "Leaves Count 2023",
"type": "quantitative"
}
}
},
{
"mark": {
"type": "circle",
"size": 50,
"fill": {
"expr": "datum['Leaves Count 2022'] == datum.l1max ? 'red' : datum['Leaves Count 2022'] == datum.l1min ? 'green' : '#2596be'"
},
"stroke": "white",
"strokeWidth": 1
},
"encoding": {
"x": {
"field": "MONTH",
"type": "ordinal",
"sort": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
},
"y": {
"field": "Leaves Count 2022",
"type": "quantitative"
}
}
},
{
"mark": {
"type": "text",
"yOffset": -10,
"size": 10,
"color": {
"expr": "datum['Leaves Count 2023'] == datum.l2max ? 'red' : datum['Leaves Count 2023'] == datum.l2min ? 'green' : '#000000'"
},
"fontWeight": {
"expr": "datum['Leaves Count 2023'] == datum.l2max || datum['Leaves Count 2023'] == datum.l2min ? 'bold' : 'normal'"
}
},
"encoding": {
"text": {"field": "l2"},
"opacity": {
"condition": {
"test": {
"field": "MONTH",
"equal": "off"
},
"value": 0.1
},
"value": 1
},
"y": {
"field": "Leaves Count 2023",
"type": "quantitative",
"axis": null
}
}
},
{
"mark": {
"type": "text",
"yOffset": -10,
"size": 10,
"color": {
"expr": "datum['Leaves Count 2022'] == datum.l1max ? 'red' : datum['Leaves Count 2022'] == datum.l1min ? 'green' : '#000000'"
},
"fontWeight": {
"expr": "datum['Leaves Count 2022'] == datum.l1max || datum['Leaves Count 2022'] == datum.l1min ? 'bold' : 'normal'"
}
},
"encoding": {
"text": {"field": "l1"},
"opacity": {
"condition": {
"test": {
"field": "MONTH",
"equal": "off"
},
"value": 0.1
},
"value": 1
},
"y": {
"field": "Leaves Count 2022",
"type": "quantitative",
"axis": null
}
}
},
{
"mark": {
"type": "rule",
"stroke": "red",
"strokeDash": [3, 3]
},
"encoding": {
"x": {
"field": "MONTH",
"type": "ordinal",
"sort": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
},
"y": {
"field": "Leaves Count 2023",
"type": "quantitative"
}
},
"transform": [
{"filter": "datum['Leaves Count 2023'] == datum.l2max"}
]
},
{
"mark": {
"type": "rule",
"stroke": "red",
"strokeDash": [3, 3]
},
"encoding": {
"x": {
"field": "MONTH",
"type": "ordinal",
"sort": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
},
"y": {
"field": "Leaves Count 2022",
"type": "quantitative"
}
},
"transform": [
{"filter": "datum['Leaves Count 2022'] == datum.l1max"}
]
}
],
"encoding": {
"x": {
"field": "MONTH",
"type": "ordinal",
"axis": {"labelPadding": 0},
"sort": ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
"title": "MONTH"
},
"y": {
"field": "Leaves Count 2023",
"type": "quantitative",
"axis": null
}
}
}
I want to add a legend at the right of my visual with two small circles colored in the same color as my the colors I used for leaves count 2022 and leaves count 2023 , something like this