542 lines
36 KiB
Plaintext
542 lines
36 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "adf7aa23-daf2-4cfe-9910-2b00576b2ff7",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import polars as pl\n",
|
|
"import altair as alt"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "0726aa55-4e9f-4f0f-a522-dc231c3f2c41",
|
|
"metadata": {},
|
|
"source": [
|
|
"These are examples used in class, there's no additional content here, but you can see how the examples were created."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 118,
|
|
"id": "05a4d76e-7ade-431a-a773-d438c6ac9c79",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"random_df = pl.DataFrame({\n",
|
|
" \"a\": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20],\n",
|
|
" \"b\": [\"a\", \"b\", \"q\", \"c\", \"a\", \"c\", \"n\", \"c\", \"p\", \"b\", \"c\", \"n\", \"q\", \"r\", \"a\", \"b\", \"c\", \"b\", \"b\", \"b\"],\n",
|
|
" \"c\": [500, 2, 3, 4, 10, 20, 100, 490, 400, 140, 200, 180, 380, 350, 180, 135, 400, 210, 230, 300]\n",
|
|
"})"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 122,
|
|
"id": "902298fe-3a6c-446e-a060-f95071acedf1",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"\n",
|
|
"<style>\n",
|
|
" #altair-viz-8f69a7d2f3b34034b2453852296e01a2.vega-embed {\n",
|
|
" width: 100%;\n",
|
|
" display: flex;\n",
|
|
" }\n",
|
|
"\n",
|
|
" #altair-viz-8f69a7d2f3b34034b2453852296e01a2.vega-embed details,\n",
|
|
" #altair-viz-8f69a7d2f3b34034b2453852296e01a2.vega-embed details summary {\n",
|
|
" position: relative;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<div id=\"altair-viz-8f69a7d2f3b34034b2453852296e01a2\"></div>\n",
|
|
"<script type=\"text/javascript\">\n",
|
|
" var VEGA_DEBUG = (typeof VEGA_DEBUG == \"undefined\") ? {} : VEGA_DEBUG;\n",
|
|
" (function(spec, embedOpt){\n",
|
|
" let outputDiv = document.currentScript.previousElementSibling;\n",
|
|
" if (outputDiv.id !== \"altair-viz-8f69a7d2f3b34034b2453852296e01a2\") {\n",
|
|
" outputDiv = document.getElementById(\"altair-viz-8f69a7d2f3b34034b2453852296e01a2\");\n",
|
|
" }\n",
|
|
" const paths = {\n",
|
|
" \"vega\": \"https://cdn.jsdelivr.net/npm/vega@5?noext\",\n",
|
|
" \"vega-lib\": \"https://cdn.jsdelivr.net/npm/vega-lib?noext\",\n",
|
|
" \"vega-lite\": \"https://cdn.jsdelivr.net/npm/vega-lite@5.20.1?noext\",\n",
|
|
" \"vega-embed\": \"https://cdn.jsdelivr.net/npm/vega-embed@6?noext\",\n",
|
|
" };\n",
|
|
"\n",
|
|
" function maybeLoadScript(lib, version) {\n",
|
|
" var key = `${lib.replace(\"-\", \"\")}_version`;\n",
|
|
" return (VEGA_DEBUG[key] == version) ?\n",
|
|
" Promise.resolve(paths[lib]) :\n",
|
|
" new Promise(function(resolve, reject) {\n",
|
|
" var s = document.createElement('script');\n",
|
|
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
|
|
" s.async = true;\n",
|
|
" s.onload = () => {\n",
|
|
" VEGA_DEBUG[key] = version;\n",
|
|
" return resolve(paths[lib]);\n",
|
|
" };\n",
|
|
" s.onerror = () => reject(`Error loading script: ${paths[lib]}`);\n",
|
|
" s.src = paths[lib];\n",
|
|
" });\n",
|
|
" }\n",
|
|
"\n",
|
|
" function showError(err) {\n",
|
|
" outputDiv.innerHTML = `<div class=\"error\" style=\"color:red;\">${err}</div>`;\n",
|
|
" throw err;\n",
|
|
" }\n",
|
|
"\n",
|
|
" function displayChart(vegaEmbed) {\n",
|
|
" vegaEmbed(outputDiv, spec, embedOpt)\n",
|
|
" .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));\n",
|
|
" }\n",
|
|
"\n",
|
|
" if(typeof define === \"function\" && define.amd) {\n",
|
|
" requirejs.config({paths});\n",
|
|
" require([\"vega-embed\"], displayChart, err => showError(`Error loading script: ${err.message}`));\n",
|
|
" } else {\n",
|
|
" maybeLoadScript(\"vega\", \"5\")\n",
|
|
" .then(() => maybeLoadScript(\"vega-lite\", \"5.20.1\"))\n",
|
|
" .then(() => maybeLoadScript(\"vega-embed\", \"6\"))\n",
|
|
" .catch(showError)\n",
|
|
" .then(() => displayChart(vegaEmbed));\n",
|
|
" }\n",
|
|
" })({\"config\": {\"view\": {\"continuousWidth\": 300, \"continuousHeight\": 300}}, \"data\": {\"name\": \"data-2b502a9efab69527ae91e7bc0e4a91b4\"}, \"mark\": {\"type\": \"point\"}, \"encoding\": {\"color\": {\"field\": \"b\", \"legend\": null, \"type\": \"nominal\"}, \"fill\": {\"field\": \"b\", \"legend\": null, \"type\": \"nominal\"}, \"opacity\": {\"field\": \"b\", \"legend\": null, \"type\": \"nominal\"}, \"shape\": {\"field\": \"a\", \"legend\": null, \"type\": \"nominal\"}, \"size\": {\"field\": \"c\", \"legend\": null, \"type\": \"quantitative\"}, \"x\": {\"field\": \"a\", \"type\": \"quantitative\"}, \"y\": {\"field\": \"c\", \"type\": \"quantitative\"}}, \"$schema\": \"https://vega.github.io/schema/vega-lite/v5.20.1.json\", \"datasets\": {\"data-2b502a9efab69527ae91e7bc0e4a91b4\": [{\"a\": 1, \"b\": \"a\", \"c\": 500}, {\"a\": 2, \"b\": \"b\", \"c\": 2}, {\"a\": 3, \"b\": \"q\", \"c\": 3}, {\"a\": 4, \"b\": \"c\", \"c\": 4}, {\"a\": 5, \"b\": \"a\", \"c\": 10}, {\"a\": 6, \"b\": \"c\", \"c\": 20}, {\"a\": 7, \"b\": \"n\", \"c\": 100}, {\"a\": 8, \"b\": \"c\", \"c\": 490}, {\"a\": 9, \"b\": \"p\", \"c\": 400}, {\"a\": 10, \"b\": \"b\", \"c\": 140}, {\"a\": 11, \"b\": \"c\", \"c\": 200}, {\"a\": 12, \"b\": \"n\", \"c\": 180}, {\"a\": 13, \"b\": \"q\", \"c\": 380}, {\"a\": 14, \"b\": \"r\", \"c\": 350}, {\"a\": 15, \"b\": \"a\", \"c\": 180}, {\"a\": 16, \"b\": \"b\", \"c\": 135}, {\"a\": 17, \"b\": \"c\", \"c\": 400}, {\"a\": 18, \"b\": \"b\", \"c\": 210}, {\"a\": 19, \"b\": \"b\", \"c\": 230}, {\"a\": 20, \"b\": \"b\", \"c\": 300}]}}, {\"mode\": \"vega-lite\"});\n",
|
|
"</script>"
|
|
],
|
|
"text/plain": [
|
|
"alt.Chart(...)"
|
|
]
|
|
},
|
|
"execution_count": 122,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"alt.Chart(random_df).mark_point().encode(\n",
|
|
" alt.X(\"a\"),\n",
|
|
" alt.Y(\"c\"),\n",
|
|
" alt.Color(\"b\", legend=None),\n",
|
|
" alt.Size(\"c\", legend=None),\n",
|
|
" alt.Shape(\"a:N\", legend=None),\n",
|
|
" alt.Fill(\"b\", legend=None),\n",
|
|
" alt.Opacity(\"b\", legend=None),\n",
|
|
") "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 120,
|
|
"id": "87228f27-baad-4acb-80af-1ca44c21e8fe",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"\n",
|
|
"<style>\n",
|
|
" #altair-viz-d6e682915f1e45e09a87b6af90981f0d.vega-embed {\n",
|
|
" width: 100%;\n",
|
|
" display: flex;\n",
|
|
" }\n",
|
|
"\n",
|
|
" #altair-viz-d6e682915f1e45e09a87b6af90981f0d.vega-embed details,\n",
|
|
" #altair-viz-d6e682915f1e45e09a87b6af90981f0d.vega-embed details summary {\n",
|
|
" position: relative;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<div id=\"altair-viz-d6e682915f1e45e09a87b6af90981f0d\"></div>\n",
|
|
"<script type=\"text/javascript\">\n",
|
|
" var VEGA_DEBUG = (typeof VEGA_DEBUG == \"undefined\") ? {} : VEGA_DEBUG;\n",
|
|
" (function(spec, embedOpt){\n",
|
|
" let outputDiv = document.currentScript.previousElementSibling;\n",
|
|
" if (outputDiv.id !== \"altair-viz-d6e682915f1e45e09a87b6af90981f0d\") {\n",
|
|
" outputDiv = document.getElementById(\"altair-viz-d6e682915f1e45e09a87b6af90981f0d\");\n",
|
|
" }\n",
|
|
" const paths = {\n",
|
|
" \"vega\": \"https://cdn.jsdelivr.net/npm/vega@5?noext\",\n",
|
|
" \"vega-lib\": \"https://cdn.jsdelivr.net/npm/vega-lib?noext\",\n",
|
|
" \"vega-lite\": \"https://cdn.jsdelivr.net/npm/vega-lite@5.20.1?noext\",\n",
|
|
" \"vega-embed\": \"https://cdn.jsdelivr.net/npm/vega-embed@6?noext\",\n",
|
|
" };\n",
|
|
"\n",
|
|
" function maybeLoadScript(lib, version) {\n",
|
|
" var key = `${lib.replace(\"-\", \"\")}_version`;\n",
|
|
" return (VEGA_DEBUG[key] == version) ?\n",
|
|
" Promise.resolve(paths[lib]) :\n",
|
|
" new Promise(function(resolve, reject) {\n",
|
|
" var s = document.createElement('script');\n",
|
|
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
|
|
" s.async = true;\n",
|
|
" s.onload = () => {\n",
|
|
" VEGA_DEBUG[key] = version;\n",
|
|
" return resolve(paths[lib]);\n",
|
|
" };\n",
|
|
" s.onerror = () => reject(`Error loading script: ${paths[lib]}`);\n",
|
|
" s.src = paths[lib];\n",
|
|
" });\n",
|
|
" }\n",
|
|
"\n",
|
|
" function showError(err) {\n",
|
|
" outputDiv.innerHTML = `<div class=\"error\" style=\"color:red;\">${err}</div>`;\n",
|
|
" throw err;\n",
|
|
" }\n",
|
|
"\n",
|
|
" function displayChart(vegaEmbed) {\n",
|
|
" vegaEmbed(outputDiv, spec, embedOpt)\n",
|
|
" .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));\n",
|
|
" }\n",
|
|
"\n",
|
|
" if(typeof define === \"function\" && define.amd) {\n",
|
|
" requirejs.config({paths});\n",
|
|
" require([\"vega-embed\"], displayChart, err => showError(`Error loading script: ${err.message}`));\n",
|
|
" } else {\n",
|
|
" maybeLoadScript(\"vega\", \"5\")\n",
|
|
" .then(() => maybeLoadScript(\"vega-lite\", \"5.20.1\"))\n",
|
|
" .then(() => maybeLoadScript(\"vega-embed\", \"6\"))\n",
|
|
" .catch(showError)\n",
|
|
" .then(() => displayChart(vegaEmbed));\n",
|
|
" }\n",
|
|
" })({\"config\": {\"view\": {\"continuousWidth\": 300, \"continuousHeight\": 300}}, \"data\": {\"name\": \"data-2b502a9efab69527ae91e7bc0e4a91b4\"}, \"mark\": {\"type\": \"line\"}, \"encoding\": {\"x\": {\"field\": \"a\", \"type\": \"quantitative\"}, \"y\": {\"field\": \"c\", \"type\": \"quantitative\"}}, \"$schema\": \"https://vega.github.io/schema/vega-lite/v5.20.1.json\", \"datasets\": {\"data-2b502a9efab69527ae91e7bc0e4a91b4\": [{\"a\": 1, \"b\": \"a\", \"c\": 500}, {\"a\": 2, \"b\": \"b\", \"c\": 2}, {\"a\": 3, \"b\": \"q\", \"c\": 3}, {\"a\": 4, \"b\": \"c\", \"c\": 4}, {\"a\": 5, \"b\": \"a\", \"c\": 10}, {\"a\": 6, \"b\": \"c\", \"c\": 20}, {\"a\": 7, \"b\": \"n\", \"c\": 100}, {\"a\": 8, \"b\": \"c\", \"c\": 490}, {\"a\": 9, \"b\": \"p\", \"c\": 400}, {\"a\": 10, \"b\": \"b\", \"c\": 140}, {\"a\": 11, \"b\": \"c\", \"c\": 200}, {\"a\": 12, \"b\": \"n\", \"c\": 180}, {\"a\": 13, \"b\": \"q\", \"c\": 380}, {\"a\": 14, \"b\": \"r\", \"c\": 350}, {\"a\": 15, \"b\": \"a\", \"c\": 180}, {\"a\": 16, \"b\": \"b\", \"c\": 135}, {\"a\": 17, \"b\": \"c\", \"c\": 400}, {\"a\": 18, \"b\": \"b\", \"c\": 210}, {\"a\": 19, \"b\": \"b\", \"c\": 230}, {\"a\": 20, \"b\": \"b\", \"c\": 300}]}}, {\"mode\": \"vega-lite\"});\n",
|
|
"</script>"
|
|
],
|
|
"text/plain": [
|
|
"alt.Chart(...)"
|
|
]
|
|
},
|
|
"execution_count": 120,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 123,
|
|
"id": "5515ea60-70c1-4fd7-bef9-b5451c2ea00c",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"\n",
|
|
"<style>\n",
|
|
" #altair-viz-83fcb2d8bc334945a9e1bbb53e0c57d7.vega-embed {\n",
|
|
" width: 100%;\n",
|
|
" display: flex;\n",
|
|
" }\n",
|
|
"\n",
|
|
" #altair-viz-83fcb2d8bc334945a9e1bbb53e0c57d7.vega-embed details,\n",
|
|
" #altair-viz-83fcb2d8bc334945a9e1bbb53e0c57d7.vega-embed details summary {\n",
|
|
" position: relative;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<div id=\"altair-viz-83fcb2d8bc334945a9e1bbb53e0c57d7\"></div>\n",
|
|
"<script type=\"text/javascript\">\n",
|
|
" var VEGA_DEBUG = (typeof VEGA_DEBUG == \"undefined\") ? {} : VEGA_DEBUG;\n",
|
|
" (function(spec, embedOpt){\n",
|
|
" let outputDiv = document.currentScript.previousElementSibling;\n",
|
|
" if (outputDiv.id !== \"altair-viz-83fcb2d8bc334945a9e1bbb53e0c57d7\") {\n",
|
|
" outputDiv = document.getElementById(\"altair-viz-83fcb2d8bc334945a9e1bbb53e0c57d7\");\n",
|
|
" }\n",
|
|
" const paths = {\n",
|
|
" \"vega\": \"https://cdn.jsdelivr.net/npm/vega@5?noext\",\n",
|
|
" \"vega-lib\": \"https://cdn.jsdelivr.net/npm/vega-lib?noext\",\n",
|
|
" \"vega-lite\": \"https://cdn.jsdelivr.net/npm/vega-lite@5.20.1?noext\",\n",
|
|
" \"vega-embed\": \"https://cdn.jsdelivr.net/npm/vega-embed@6?noext\",\n",
|
|
" };\n",
|
|
"\n",
|
|
" function maybeLoadScript(lib, version) {\n",
|
|
" var key = `${lib.replace(\"-\", \"\")}_version`;\n",
|
|
" return (VEGA_DEBUG[key] == version) ?\n",
|
|
" Promise.resolve(paths[lib]) :\n",
|
|
" new Promise(function(resolve, reject) {\n",
|
|
" var s = document.createElement('script');\n",
|
|
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
|
|
" s.async = true;\n",
|
|
" s.onload = () => {\n",
|
|
" VEGA_DEBUG[key] = version;\n",
|
|
" return resolve(paths[lib]);\n",
|
|
" };\n",
|
|
" s.onerror = () => reject(`Error loading script: ${paths[lib]}`);\n",
|
|
" s.src = paths[lib];\n",
|
|
" });\n",
|
|
" }\n",
|
|
"\n",
|
|
" function showError(err) {\n",
|
|
" outputDiv.innerHTML = `<div class=\"error\" style=\"color:red;\">${err}</div>`;\n",
|
|
" throw err;\n",
|
|
" }\n",
|
|
"\n",
|
|
" function displayChart(vegaEmbed) {\n",
|
|
" vegaEmbed(outputDiv, spec, embedOpt)\n",
|
|
" .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));\n",
|
|
" }\n",
|
|
"\n",
|
|
" if(typeof define === \"function\" && define.amd) {\n",
|
|
" requirejs.config({paths});\n",
|
|
" require([\"vega-embed\"], displayChart, err => showError(`Error loading script: ${err.message}`));\n",
|
|
" } else {\n",
|
|
" maybeLoadScript(\"vega\", \"5\")\n",
|
|
" .then(() => maybeLoadScript(\"vega-lite\", \"5.20.1\"))\n",
|
|
" .then(() => maybeLoadScript(\"vega-embed\", \"6\"))\n",
|
|
" .catch(showError)\n",
|
|
" .then(() => displayChart(vegaEmbed));\n",
|
|
" }\n",
|
|
" })({\"config\": {\"view\": {\"continuousWidth\": 300, \"continuousHeight\": 300}}, \"data\": {\"name\": \"data-2b502a9efab69527ae91e7bc0e4a91b4\"}, \"mark\": {\"type\": \"line\"}, \"encoding\": {\"x\": {\"field\": \"a\", \"type\": \"quantitative\"}, \"y\": {\"field\": \"c\", \"type\": \"quantitative\"}}, \"$schema\": \"https://vega.github.io/schema/vega-lite/v5.20.1.json\", \"datasets\": {\"data-2b502a9efab69527ae91e7bc0e4a91b4\": [{\"a\": 1, \"b\": \"a\", \"c\": 500}, {\"a\": 2, \"b\": \"b\", \"c\": 2}, {\"a\": 3, \"b\": \"q\", \"c\": 3}, {\"a\": 4, \"b\": \"c\", \"c\": 4}, {\"a\": 5, \"b\": \"a\", \"c\": 10}, {\"a\": 6, \"b\": \"c\", \"c\": 20}, {\"a\": 7, \"b\": \"n\", \"c\": 100}, {\"a\": 8, \"b\": \"c\", \"c\": 490}, {\"a\": 9, \"b\": \"p\", \"c\": 400}, {\"a\": 10, \"b\": \"b\", \"c\": 140}, {\"a\": 11, \"b\": \"c\", \"c\": 200}, {\"a\": 12, \"b\": \"n\", \"c\": 180}, {\"a\": 13, \"b\": \"q\", \"c\": 380}, {\"a\": 14, \"b\": \"r\", \"c\": 350}, {\"a\": 15, \"b\": \"a\", \"c\": 180}, {\"a\": 16, \"b\": \"b\", \"c\": 135}, {\"a\": 17, \"b\": \"c\", \"c\": 400}, {\"a\": 18, \"b\": \"b\", \"c\": 210}, {\"a\": 19, \"b\": \"b\", \"c\": 230}, {\"a\": 20, \"b\": \"b\", \"c\": 300}]}}, {\"mode\": \"vega-lite\"});\n",
|
|
"</script>"
|
|
],
|
|
"text/plain": [
|
|
"alt.Chart(...)"
|
|
]
|
|
},
|
|
"execution_count": 123,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"alt.Chart(random_df).mark_line().encode(\n",
|
|
" x=\"a\",\n",
|
|
" y=\"c\",\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 143,
|
|
"id": "ba3df4b2-e64e-4574-b104-068ebe8d76c2",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"\n",
|
|
"<style>\n",
|
|
" #altair-viz-84136455ba564453b622f5b7d324ad44.vega-embed {\n",
|
|
" width: 100%;\n",
|
|
" display: flex;\n",
|
|
" }\n",
|
|
"\n",
|
|
" #altair-viz-84136455ba564453b622f5b7d324ad44.vega-embed details,\n",
|
|
" #altair-viz-84136455ba564453b622f5b7d324ad44.vega-embed details summary {\n",
|
|
" position: relative;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<div id=\"altair-viz-84136455ba564453b622f5b7d324ad44\"></div>\n",
|
|
"<script type=\"text/javascript\">\n",
|
|
" var VEGA_DEBUG = (typeof VEGA_DEBUG == \"undefined\") ? {} : VEGA_DEBUG;\n",
|
|
" (function(spec, embedOpt){\n",
|
|
" let outputDiv = document.currentScript.previousElementSibling;\n",
|
|
" if (outputDiv.id !== \"altair-viz-84136455ba564453b622f5b7d324ad44\") {\n",
|
|
" outputDiv = document.getElementById(\"altair-viz-84136455ba564453b622f5b7d324ad44\");\n",
|
|
" }\n",
|
|
" const paths = {\n",
|
|
" \"vega\": \"https://cdn.jsdelivr.net/npm/vega@5?noext\",\n",
|
|
" \"vega-lib\": \"https://cdn.jsdelivr.net/npm/vega-lib?noext\",\n",
|
|
" \"vega-lite\": \"https://cdn.jsdelivr.net/npm/vega-lite@5.20.1?noext\",\n",
|
|
" \"vega-embed\": \"https://cdn.jsdelivr.net/npm/vega-embed@6?noext\",\n",
|
|
" };\n",
|
|
"\n",
|
|
" function maybeLoadScript(lib, version) {\n",
|
|
" var key = `${lib.replace(\"-\", \"\")}_version`;\n",
|
|
" return (VEGA_DEBUG[key] == version) ?\n",
|
|
" Promise.resolve(paths[lib]) :\n",
|
|
" new Promise(function(resolve, reject) {\n",
|
|
" var s = document.createElement('script');\n",
|
|
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
|
|
" s.async = true;\n",
|
|
" s.onload = () => {\n",
|
|
" VEGA_DEBUG[key] = version;\n",
|
|
" return resolve(paths[lib]);\n",
|
|
" };\n",
|
|
" s.onerror = () => reject(`Error loading script: ${paths[lib]}`);\n",
|
|
" s.src = paths[lib];\n",
|
|
" });\n",
|
|
" }\n",
|
|
"\n",
|
|
" function showError(err) {\n",
|
|
" outputDiv.innerHTML = `<div class=\"error\" style=\"color:red;\">${err}</div>`;\n",
|
|
" throw err;\n",
|
|
" }\n",
|
|
"\n",
|
|
" function displayChart(vegaEmbed) {\n",
|
|
" vegaEmbed(outputDiv, spec, embedOpt)\n",
|
|
" .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));\n",
|
|
" }\n",
|
|
"\n",
|
|
" if(typeof define === \"function\" && define.amd) {\n",
|
|
" requirejs.config({paths});\n",
|
|
" require([\"vega-embed\"], displayChart, err => showError(`Error loading script: ${err.message}`));\n",
|
|
" } else {\n",
|
|
" maybeLoadScript(\"vega\", \"5\")\n",
|
|
" .then(() => maybeLoadScript(\"vega-lite\", \"5.20.1\"))\n",
|
|
" .then(() => maybeLoadScript(\"vega-embed\", \"6\"))\n",
|
|
" .catch(showError)\n",
|
|
" .then(() => displayChart(vegaEmbed));\n",
|
|
" }\n",
|
|
" })({\"config\": {\"view\": {\"continuousWidth\": 300, \"continuousHeight\": 300}}, \"layer\": [{\"mark\": {\"type\": \"line\"}, \"encoding\": {\"color\": {\"field\": \"category\", \"legend\": null, \"type\": \"nominal\"}, \"x\": {\"field\": \"delta-stimulus\", \"type\": \"quantitative\"}, \"y\": {\"field\": \"response\", \"type\": \"quantitative\"}}}, {\"mark\": {\"type\": \"text\", \"align\": \"left\", \"dx\": 2}, \"encoding\": {\"color\": {\"field\": \"category\", \"type\": \"nominal\"}, \"text\": {\"field\": \"category\", \"type\": \"nominal\"}, \"x\": {\"aggregate\": \"max\", \"field\": \"delta-stimulus\", \"type\": \"quantitative\"}, \"y\": {\"aggregate\": \"max\", \"field\": \"response\", \"type\": \"quantitative\"}}}], \"data\": {\"name\": \"data-e83bb7e1867358e82dcb2f51a5487998\"}, \"$schema\": \"https://vega.github.io/schema/vega-lite/v5.20.1.json\", \"datasets\": {\"data-e83bb7e1867358e82dcb2f51a5487998\": [{\"category\": \"brightness\", \"delta-stimulus\": 0.0, \"response\": 0.0}, {\"category\": \"depth perception\", \"delta-stimulus\": 0.0, \"response\": 0.0}, {\"category\": \"area\", \"delta-stimulus\": 0.0, \"response\": 0.0}, {\"category\": \"2D position\", \"delta-stimulus\": 0.0, \"response\": 0.0}, {\"category\": \"color saturation\", \"delta-stimulus\": 0.0, \"response\": 0.0}, {\"category\": \"brightness\", \"delta-stimulus\": 0.2, \"response\": 0.5253055608807534}, {\"category\": \"depth perception\", \"delta-stimulus\": 0.2, \"response\": 0.36278464514424597}, {\"category\": \"area\", \"delta-stimulus\": 0.2, \"response\": 0.32413131933855255}, {\"category\": \"2D position\", \"delta-stimulus\": 0.2, \"response\": 0.2}, {\"category\": \"color saturation\", \"delta-stimulus\": 0.2, \"response\": 0.06482626386771051}, {\"category\": \"brightness\", \"delta-stimulus\": 0.4, \"response\": 0.6931448431551464}, {\"category\": \"depth perception\", \"delta-stimulus\": 0.4, \"response\": 0.5614328170199332}, {\"category\": \"area\", \"delta-stimulus\": 0.4, \"response\": 0.526552881733695}, {\"category\": \"2D position\", \"delta-stimulus\": 0.4, \"response\": 0.4}, {\"category\": \"color saturation\", \"delta-stimulus\": 0.4, \"response\": 0.210621152693478}, {\"category\": \"brightness\", \"delta-stimulus\": 0.6, \"response\": 0.8151931096059227}, {\"category\": \"depth perception\", \"delta-stimulus\": 0.6, \"response\": 0.7248285441143673}, {\"category\": \"area\", \"delta-stimulus\": 0.6, \"response\": 0.6993681904144294}, {\"category\": \"2D position\", \"delta-stimulus\": 0.6, \"response\": 0.6}, {\"category\": \"color saturation\", \"delta-stimulus\": 0.6, \"response\": 0.41962091424865766}, {\"category\": \"brightness\", \"delta-stimulus\": 0.8, \"response\": 0.9146101038546527}, {\"category\": \"depth perception\", \"delta-stimulus\": 0.8, \"response\": 0.8688537738459388}, {\"category\": \"area\", \"delta-stimulus\": 0.8, \"response\": 0.8553876799929505}, {\"category\": \"2D position\", \"delta-stimulus\": 0.8, \"response\": 0.8}, {\"category\": \"color saturation\", \"delta-stimulus\": 0.8, \"response\": 0.6843101439943604}, {\"category\": \"brightness\", \"delta-stimulus\": 1.0, \"response\": 1.0}, {\"category\": \"depth perception\", \"delta-stimulus\": 1.0, \"response\": 1.0}, {\"category\": \"area\", \"delta-stimulus\": 1.0, \"response\": 1.0}, {\"category\": \"2D position\", \"delta-stimulus\": 1.0, \"response\": 1.0}, {\"category\": \"color saturation\", \"delta-stimulus\": 1.0, \"response\": 1.0}, {\"category\": \"brightness\", \"delta-stimulus\": 1.25, \"response\": 1.0933620739432781}, {\"category\": \"depth perception\", \"delta-stimulus\": 1.25, \"response\": 1.150941654512875}, {\"category\": \"area\", \"delta-stimulus\": 1.25, \"response\": 1.1690605597782766}, {\"category\": \"2D position\", \"delta-stimulus\": 1.25, \"response\": 1.25}, {\"category\": \"color saturation\", \"delta-stimulus\": 1.25, \"response\": 1.4613256997228459}, {\"category\": \"brightness\", \"delta-stimulus\": 1.5, \"response\": 1.1760790225246736}, {\"category\": \"depth perception\", \"delta-stimulus\": 1.5, \"response\": 1.291033445393757}, {\"category\": \"area\", \"delta-stimulus\": 1.5, \"response\": 1.328201239943334}, {\"category\": \"2D position\", \"delta-stimulus\": 1.5, \"response\": 1.5}, {\"category\": \"color saturation\", \"delta-stimulus\": 1.5, \"response\": 1.9923018599150013}, {\"category\": \"brightness\", \"delta-stimulus\": 1.75, \"response\": 1.2508787635704217}, {\"category\": \"depth perception\", \"delta-stimulus\": 1.75, \"response\": 1.422702093823748}, {\"category\": \"area\", \"delta-stimulus\": 1.75, \"response\": 1.4795397379753739}, {\"category\": \"2D position\", \"delta-stimulus\": 1.75, \"response\": 1.75}, {\"category\": \"color saturation\", \"delta-stimulus\": 1.75, \"response\": 2.589194541456904}, {\"category\": \"brightness\", \"delta-stimulus\": 2.0, \"response\": 1.3195079107728942}, {\"category\": \"depth perception\", \"delta-stimulus\": 2.0, \"response\": 1.5475649935423899}, {\"category\": \"area\", \"delta-stimulus\": 2.0, \"response\": 1.624504792712471}, {\"category\": \"2D position\", \"delta-stimulus\": 2.0, \"response\": 2.0}, {\"category\": \"color saturation\", \"delta-stimulus\": 2.0, \"response\": 3.249009585424942}, {\"category\": \"brightness\", \"delta-stimulus\": 3.0, \"response\": 1.5518455739153598}, {\"category\": \"depth perception\", \"delta-stimulus\": 3.0, \"response\": 1.9979581655837992}, {\"category\": \"area\", \"delta-stimulus\": 3.0, \"response\": 2.157669279974593}, {\"category\": \"2D position\", \"delta-stimulus\": 3.0, \"response\": 3.0}, {\"category\": \"color saturation\", \"delta-stimulus\": 3.0, \"response\": 6.473007839923779}]}}, {\"mode\": \"vega-lite\"});\n",
|
|
"</script>"
|
|
],
|
|
"text/plain": [
|
|
"alt.LayerChart(...)"
|
|
]
|
|
},
|
|
"execution_count": 143,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"stevens = {\"brightness\": 0.4, \"depth perception\": 0.63, \"area\": 0.7, \"2D position\": 1, \n",
|
|
" \"color saturation\": 1.7, \n",
|
|
" # \"electric shock\": 3.5\n",
|
|
" }\n",
|
|
"\n",
|
|
"rows = []\n",
|
|
"for x in [0,0.2,0.4,0.6, 0.8, 1.0, 1.25, 1.5, 1.75, 2, 3]:\n",
|
|
" for cat, exponent in stevens.items():\n",
|
|
" rows.append({\"category\": cat, \"delta-stimulus\": x, \"response\": x**exponent})\n",
|
|
"\n",
|
|
"stevens_df = pl.DataFrame(rows)\n",
|
|
"\n",
|
|
"alt.Chart(stevens_df).mark_line().encode(\n",
|
|
" alt.Color(\"category\", legend=None),\n",
|
|
" alt.X(\"delta-stimulus\"),\n",
|
|
" alt.Y(\"response\"),\n",
|
|
") + alt.Chart(stevens_df).mark_text(align=\"left\", dx=2).encode(\n",
|
|
" alt.Color(\"category\"),\n",
|
|
" alt.Text(\"category\"),\n",
|
|
" alt.X(\"delta-stimulus\", aggregate=\"max\"),\n",
|
|
" alt.Y(\"response\", aggregate=\"max\"),\n",
|
|
").properties()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 138,
|
|
"id": "95dc101c-1dda-413a-87fb-b700fe5f43e3",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"\n",
|
|
"<style>\n",
|
|
" #altair-viz-bc53670734f24e488b34439eb87105b4.vega-embed {\n",
|
|
" width: 100%;\n",
|
|
" display: flex;\n",
|
|
" }\n",
|
|
"\n",
|
|
" #altair-viz-bc53670734f24e488b34439eb87105b4.vega-embed details,\n",
|
|
" #altair-viz-bc53670734f24e488b34439eb87105b4.vega-embed details summary {\n",
|
|
" position: relative;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<div id=\"altair-viz-bc53670734f24e488b34439eb87105b4\"></div>\n",
|
|
"<script type=\"text/javascript\">\n",
|
|
" var VEGA_DEBUG = (typeof VEGA_DEBUG == \"undefined\") ? {} : VEGA_DEBUG;\n",
|
|
" (function(spec, embedOpt){\n",
|
|
" let outputDiv = document.currentScript.previousElementSibling;\n",
|
|
" if (outputDiv.id !== \"altair-viz-bc53670734f24e488b34439eb87105b4\") {\n",
|
|
" outputDiv = document.getElementById(\"altair-viz-bc53670734f24e488b34439eb87105b4\");\n",
|
|
" }\n",
|
|
" const paths = {\n",
|
|
" \"vega\": \"https://cdn.jsdelivr.net/npm/vega@5?noext\",\n",
|
|
" \"vega-lib\": \"https://cdn.jsdelivr.net/npm/vega-lib?noext\",\n",
|
|
" \"vega-lite\": \"https://cdn.jsdelivr.net/npm/vega-lite@5.20.1?noext\",\n",
|
|
" \"vega-embed\": \"https://cdn.jsdelivr.net/npm/vega-embed@6?noext\",\n",
|
|
" };\n",
|
|
"\n",
|
|
" function maybeLoadScript(lib, version) {\n",
|
|
" var key = `${lib.replace(\"-\", \"\")}_version`;\n",
|
|
" return (VEGA_DEBUG[key] == version) ?\n",
|
|
" Promise.resolve(paths[lib]) :\n",
|
|
" new Promise(function(resolve, reject) {\n",
|
|
" var s = document.createElement('script');\n",
|
|
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
|
|
" s.async = true;\n",
|
|
" s.onload = () => {\n",
|
|
" VEGA_DEBUG[key] = version;\n",
|
|
" return resolve(paths[lib]);\n",
|
|
" };\n",
|
|
" s.onerror = () => reject(`Error loading script: ${paths[lib]}`);\n",
|
|
" s.src = paths[lib];\n",
|
|
" });\n",
|
|
" }\n",
|
|
"\n",
|
|
" function showError(err) {\n",
|
|
" outputDiv.innerHTML = `<div class=\"error\" style=\"color:red;\">${err}</div>`;\n",
|
|
" throw err;\n",
|
|
" }\n",
|
|
"\n",
|
|
" function displayChart(vegaEmbed) {\n",
|
|
" vegaEmbed(outputDiv, spec, embedOpt)\n",
|
|
" .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));\n",
|
|
" }\n",
|
|
"\n",
|
|
" if(typeof define === \"function\" && define.amd) {\n",
|
|
" requirejs.config({paths});\n",
|
|
" require([\"vega-embed\"], displayChart, err => showError(`Error loading script: ${err.message}`));\n",
|
|
" } else {\n",
|
|
" maybeLoadScript(\"vega\", \"5\")\n",
|
|
" .then(() => maybeLoadScript(\"vega-lite\", \"5.20.1\"))\n",
|
|
" .then(() => maybeLoadScript(\"vega-embed\", \"6\"))\n",
|
|
" .catch(showError)\n",
|
|
" .then(() => displayChart(vegaEmbed));\n",
|
|
" }\n",
|
|
" })({\"config\": {\"view\": {\"continuousWidth\": 300, \"continuousHeight\": 300}}, \"data\": {\"name\": \"data-0e90517b784600bf101c0511aa54d2f3\"}, \"mark\": {\"type\": \"text\", \"align\": \"left\", \"dx\": 0}, \"encoding\": {\"color\": {\"field\": \"category\", \"type\": \"nominal\"}, \"text\": {\"field\": \"category\", \"type\": \"nominal\"}, \"x\": {\"aggregate\": \"max\", \"field\": \"delta-stimulus\", \"type\": \"quantitative\"}, \"y\": {\"aggregate\": \"max\", \"field\": \"response\", \"type\": \"quantitative\"}}, \"$schema\": \"https://vega.github.io/schema/vega-lite/v5.20.1.json\", \"datasets\": {\"data-0e90517b784600bf101c0511aa54d2f3\": [{\"category\": \"brightness\", \"delta-stimulus\": 0.0, \"response\": 0.0}, {\"category\": \"depth perception\", \"delta-stimulus\": 0.0, \"response\": 0.0}, {\"category\": \"area\", \"delta-stimulus\": 0.0, \"response\": 0.0}, {\"category\": \"2D position\", \"delta-stimulus\": 0.0, \"response\": 0.0}, {\"category\": \"color saturation\", \"delta-stimulus\": 0.0, \"response\": 0.0}, {\"category\": \"brightness\", \"delta-stimulus\": 0.2, \"response\": 0.5253055608807534}, {\"category\": \"depth perception\", \"delta-stimulus\": 0.2, \"response\": 0.34016536861678487}, {\"category\": \"area\", \"delta-stimulus\": 0.2, \"response\": 0.32413131933855255}, {\"category\": \"2D position\", \"delta-stimulus\": 0.2, \"response\": 0.2}, {\"category\": \"color saturation\", \"delta-stimulus\": 0.2, \"response\": 0.06482626386771051}, {\"category\": \"brightness\", \"delta-stimulus\": 0.4, \"response\": 0.6931448431551464}, {\"category\": \"depth perception\", \"delta-stimulus\": 0.4, \"response\": 0.5412279224891856}, {\"category\": \"area\", \"delta-stimulus\": 0.4, \"response\": 0.526552881733695}, {\"category\": \"2D position\", \"delta-stimulus\": 0.4, \"response\": 0.4}, {\"category\": \"color saturation\", \"delta-stimulus\": 0.4, \"response\": 0.210621152693478}, {\"category\": \"brightness\", \"delta-stimulus\": 0.6, \"response\": 0.8151931096059227}, {\"category\": \"depth perception\", \"delta-stimulus\": 0.6, \"response\": 0.7101683900920394}, {\"category\": \"area\", \"delta-stimulus\": 0.6, \"response\": 0.6993681904144294}, {\"category\": \"2D position\", \"delta-stimulus\": 0.6, \"response\": 0.6}, {\"category\": \"color saturation\", \"delta-stimulus\": 0.6, \"response\": 0.41962091424865766}, {\"category\": \"brightness\", \"delta-stimulus\": 0.8, \"response\": 0.9146101038546527}, {\"category\": \"depth perception\", \"delta-stimulus\": 0.8, \"response\": 0.8611331167340528}, {\"category\": \"area\", \"delta-stimulus\": 0.8, \"response\": 0.8553876799929505}, {\"category\": \"2D position\", \"delta-stimulus\": 0.8, \"response\": 0.8}, {\"category\": \"color saturation\", \"delta-stimulus\": 0.8, \"response\": 0.6843101439943604}, {\"category\": \"brightness\", \"delta-stimulus\": 1.0, \"response\": 1.0}, {\"category\": \"depth perception\", \"delta-stimulus\": 1.0, \"response\": 1.0}, {\"category\": \"area\", \"delta-stimulus\": 1.0, \"response\": 1.0}, {\"category\": \"2D position\", \"delta-stimulus\": 1.0, \"response\": 1.0}, {\"category\": \"color saturation\", \"delta-stimulus\": 1.0, \"response\": 1.0}, {\"category\": \"brightness\", \"delta-stimulus\": 1.25, \"response\": 1.0933620739432781}, {\"category\": \"depth perception\", \"delta-stimulus\": 1.25, \"response\": 1.1612606466612456}, {\"category\": \"area\", \"delta-stimulus\": 1.25, \"response\": 1.1690605597782766}, {\"category\": \"2D position\", \"delta-stimulus\": 1.25, \"response\": 1.25}, {\"category\": \"color saturation\", \"delta-stimulus\": 1.25, \"response\": 1.4613256997228459}, {\"category\": \"brightness\", \"delta-stimulus\": 1.5, \"response\": 1.1760790225246736}, {\"category\": \"depth perception\", \"delta-stimulus\": 1.5, \"response\": 1.312142926451156}, {\"category\": \"area\", \"delta-stimulus\": 1.5, \"response\": 1.328201239943334}, {\"category\": \"2D position\", \"delta-stimulus\": 1.5, \"response\": 1.5}, {\"category\": \"color saturation\", \"delta-stimulus\": 1.5, \"response\": 1.9923018599150013}, {\"category\": \"brightness\", \"delta-stimulus\": 1.75, \"response\": 1.2508787635704217}, {\"category\": \"depth perception\", \"delta-stimulus\": 1.75, \"response\": 1.4549078683787613}, {\"category\": \"area\", \"delta-stimulus\": 1.75, \"response\": 1.4795397379753739}, {\"category\": \"2D position\", \"delta-stimulus\": 1.75, \"response\": 1.75}, {\"category\": \"color saturation\", \"delta-stimulus\": 1.75, \"response\": 2.589194541456904}, {\"category\": \"brightness\", \"delta-stimulus\": 2.0, \"response\": 1.3195079107728942}, {\"category\": \"depth perception\", \"delta-stimulus\": 2.0, \"response\": 1.5910729675098374}, {\"category\": \"area\", \"delta-stimulus\": 2.0, \"response\": 1.624504792712471}, {\"category\": \"2D position\", \"delta-stimulus\": 2.0, \"response\": 2.0}, {\"category\": \"color saturation\", \"delta-stimulus\": 2.0, \"response\": 3.249009585424942}, {\"category\": \"brightness\", \"delta-stimulus\": 3.0, \"response\": 1.5518455739153598}, {\"category\": \"depth perception\", \"delta-stimulus\": 3.0, \"response\": 2.087715139785683}, {\"category\": \"area\", \"delta-stimulus\": 3.0, \"response\": 2.157669279974593}, {\"category\": \"2D position\", \"delta-stimulus\": 3.0, \"response\": 3.0}, {\"category\": \"color saturation\", \"delta-stimulus\": 3.0, \"response\": 6.473007839923779}]}}, {\"mode\": \"vega-lite\"});\n",
|
|
"</script>"
|
|
],
|
|
"text/plain": [
|
|
"alt.Chart(...)"
|
|
]
|
|
},
|
|
"execution_count": 138,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "9ad736e1-0e19-46d1-8e93-2b1409ffffc1",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.10.15"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|