Created
February 9, 2024 18:52
-
-
Save PBI-DataVizzle/e520f23d388b6a4f80b91bee738bd715 to your computer and use it in GitHub Desktop.
light_dark_spec
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"$schema": "https://vega.github.io/schema/vega-lite/v5.json", | |
"description": "Use params to enable light/dark mode", | |
"usermeta": { | |
"developedBy": "Madison Giammaria", | |
"LinkedIn": "https://www.linkedin.com/in/madison-giammaria-58463b33", | |
"email": "[email protected]" | |
}, | |
"view": {"stroke": {"expr": "gridColor"}}, | |
"background": {"expr": "mode === 'light' ? '#fff' : '#000'"}, | |
"width": 400, | |
"height": 275, | |
"padding": {"top": 25, "left": 50, "right": 50, "bottom": 25}, | |
"title": { | |
"text": "Examining Life Expectancy - 1955 vs. 2000", | |
"anchor": "start", | |
"fontSize": 16, | |
"color": {"expr": "fontColor"}, | |
"subtitleColor": {"expr": "fontColor"}, | |
"orient": "none", | |
"dy": -50 | |
}, | |
"params": [ | |
{ | |
"name": "mode", | |
"expr": "length(data('iconSelect_store'))>0 ? 'dark' : 'light'" | |
}, | |
{ | |
"name": "colorRange", | |
"expr": "mode === 'light' ? ['#e6959c', '#911a24'] : ['#e0b8bb', '#c24650']" | |
}, | |
{"name": "lineColor", "expr": "mode === 'light' ? '#db646f' : '#d18489'"}, | |
{"name": "gridColor", "expr": "mode === 'light' ? '#ddd' : '#555'"}, | |
{"name": "fontColor", "expr": "mode === 'light' ? '#222' : '#eee'"}, | |
{ | |
"name": "lightIconPath", | |
"value": "M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z" | |
}, | |
{ | |
"name": "darkIconPath", | |
"value": "M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z" | |
}, | |
{ | |
"name": "iconPath", | |
"expr": "mode === 'light' ? lightIconPath : darkIconPath" | |
} | |
], | |
"data": {"url": "data/countries.json"}, | |
"transform": [ | |
{ | |
"filter": { | |
"field": "country", | |
"oneOf": ["China", "India", "United States", "Indonesia", "Brazil"] | |
} | |
}, | |
{"filter": {"field": "year", "oneOf": [1955, 2000]}} | |
], | |
"layer": [ | |
{ | |
"data": {"values": [{}]}, | |
"layer": [ | |
{ | |
"mark": { | |
"type": "point", | |
"shape": {"expr": "iconPath"}, | |
"x": {"expr": "width - 20"}, | |
"y": -50, | |
"fill": {"expr": "fontColor"}, | |
"stroke": "transparent", | |
"size": 3, | |
"cursor": "pointer", | |
"tooltip": { | |
"expr": "'switch to ' + (mode === 'light' ? 'dark' : 'light') + ' mode'" | |
} | |
} | |
}, | |
{ | |
"params": [ | |
{ | |
"name": "iconMouseover", | |
"select": {"type": "point", "on": "mouseover"} | |
}, | |
{ | |
"name": "iconSelect", | |
"select": {"type": "point", "on": "click", "toggle": "true"} | |
} | |
], | |
"mark": { | |
"type": "point", | |
"filled": true, | |
"x": {"expr": "width-10"}, | |
"y": -40, | |
"fill": {"expr": "fontColor"}, | |
"stroke": "transparent", | |
"size": 500, | |
"cursor": "pointer", | |
"opacity": { | |
"expr": "length(data('iconMouseover_store')) > 0 ? mode === 'light' ? 0.1 : 0.35 : 0" | |
}, | |
"tooltip": { | |
"expr": "'switch to ' + (mode === 'light' ? 'dark' : 'light') + ' mode'" | |
} | |
} | |
} | |
] | |
}, | |
{ | |
"encoding": { | |
"x": { | |
"field": "life_expect", | |
"type": "quantitative", | |
"title": "Life Expectancy (years)", | |
"axis": { | |
"ticks": false, | |
"domain": false, | |
"grid": true, | |
"gridColor": {"expr": "gridColor"} | |
} | |
}, | |
"y": { | |
"field": "country", | |
"type": "nominal", | |
"title": "Country", | |
"axis": { | |
"offset": 5, | |
"ticks": false, | |
"minExtent": 70, | |
"domain": false | |
} | |
} | |
}, | |
"layer": [ | |
{ | |
"mark": {"type": "line", "color": {"expr": "lineColor"}}, | |
"encoding": {"detail": {"field": "country", "type": "nominal"}} | |
}, | |
{ | |
"encoding": { | |
"color": { | |
"field": "year", | |
"type": "ordinal", | |
"scale": { | |
"domain": [1955, 2000], | |
"range": [{"expr": "colorRange[0]"}, {"expr": "colorRange[1]"}] | |
}, | |
"legend": {"orient": "bottom"}, | |
"title": "Year" | |
}, | |
"opacity": {"value": 1} | |
}, | |
"layer": [ | |
{"mark": {"type": "point", "filled": true, "size": 100}}, | |
{ | |
"mark": { | |
"type": "text", | |
"text": {"expr": "round(datum['life_expect'])"}, | |
"dy": 15 | |
}, | |
"encoding": {} | |
} | |
] | |
} | |
] | |
} | |
], | |
"config": { | |
"axis": { | |
"labelColor": {"expr": "fontColor"}, | |
"titleColor": {"expr": "fontColor"} | |
}, | |
"legend": { | |
"labelColor": {"expr": "fontColor"}, | |
"titleColor": {"expr": "fontColor"} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment