Reputation: 279
I tried to make two area charts using the Deneb visual of power bi and vega lite language.
Two things I struggled to do :
Here's the full code:
{
"data": {"name": "dataset"},
"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": "Variable 1", "type": "quantitative"}
}
},
{
"mark": {
"type": "text",
"yOffset": -10,
"size": 10,
"color": "#000000"
},
"encoding": {
"text": {"field": "Variable 2", "format": ".2s"},
"opacity": {
"condition": {"test": {"field": "MONTH", "equal": "off"}, "value": 0.1},
"value": 1
},
"y": {"field": "Variable 2", "type": "quantitative", "axis": null}
}
},
{
"mark": {
"type": "text",
"yOffset": -10,
"size": 10,
"color": "#000000"
},
"encoding": {
"text": {"field": "Variable 1", "format": ".2s"
},
"opacity": {
"condition": {"test": {"field": "MONTH", "equal": "off"}, "value": 0.1},
"value": 1
},
"y": {"field": "Variable 1", "type": "quantitative", "axis": null}
}
}
],
"encoding": {
"x": {
"field": "MONTH",
"type": "ordinal",
"axis": {"labelPadding": 0},
"title": null
},
"y": {
"field": "Variable 2",
"type": "quantitative",
"axis": null
}
}
}
Upvotes: 2
Views: 734
Reputation: 30174
Here you go. d3format won't do what you want so just roll your own format using transforms and expressions.
{
"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? 'green':datum['Leaves Count 2023']==datum.l2min?'red':'#063970'"
},
"stroke": "white",
"strokeWidth": 1
},
"encoding": {
"x": {
"field": "MONTH",
"type": "ordinal"
},
"y": {
"field": "Leaves Count 2023",
"type": "quantitative"
}
}
},
{
"mark": {
"type": "circle",
"size": 50,
"fill": {
"expr": "datum['Leaves Count 2022']==datum.l1max? 'green':datum['Leaves Count 2022']==datum.l1min?'red':'#2596be'"
},
"stroke": "white",
"strokeWidth": 1
},
"encoding": {
"x": {
"field": "MONTH",
"type": "ordinal"
},
"y": {
"field": "Leaves Count 2022",
"type": "quantitative"
}
}
},
{
"mark": {
"type": "text",
"yOffset": -10,
"size": 10,
"color": "#000000"
},
"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": "#000000"
},
"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
}
}
}
],
"encoding": {
"x": {
"field": "MONTH",
"type": "ordinal",
"axis": {"labelPadding": 0},
"title": null
},
"y": {
"field": "Leaves Count 2023",
"type": "quantitative",
"axis": null
}
}
}
Upvotes: 2