{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Altair is the best graphing software even made, but right now there's an open bug that prevents me from really recommending it to you. It's incredible, though, and the LA Times uses it a lot I think." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Making charts of categorical vs. categorical data\n", "\n", "Let's say we have some crimes that occur across different months." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
murdertheftburglarymonth
0146January
1254February
2343March
\n", "
" ], "text/plain": [ " murder theft burglary month\n", "0 1 4 6 January\n", "1 2 5 4 February\n", "2 3 4 3 March" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "# Your data might look like this\n", "df = pd.DataFrame({\n", " 'murder': [1, 2, 3],\n", " 'theft': [4, 5, 4],\n", " 'burglary': [6, 4, 3],\n", " 'month': ['January', 'February', 'March'],\n", "})\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Most graphing software needs this to be long data, not wide data, so we'll melt it." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
monthcrime_typecrime_count
0Januarymurder1
1Februarymurder2
2Marchmurder3
3Januarytheft4
4Februarytheft5
5Marchtheft4
6Januaryburglary6
7Februaryburglary4
8Marchburglary3
\n", "
" ], "text/plain": [ " month crime_type crime_count\n", "0 January murder 1\n", "1 February murder 2\n", "2 March murder 3\n", "3 January theft 4\n", "4 February theft 5\n", "5 March theft 4\n", "6 January burglary 6\n", "7 February burglary 4\n", "8 March burglary 3" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "melted = df.melt(id_vars='month', var_name='crime_type', value_name='crime_count')\n", "melted" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can use altair to graph each point. Our X axis is going to be the month, and our Y axis is going to be the crime type. We'll use `crime_count` for the size of each circle.\n", "\n", "**You'll need to `pip install vega` and `pip install altair` before this**" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "var spec = {\"config\": {\"view\": {\"width\": 400, \"height\": 300}, \"mark\": {\"tooltip\": null}}, \"data\": {\"name\": \"data-6c27e0442d5189f4c44a697a9dd4bac2\"}, \"mark\": \"circle\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"crime_type\"}, \"size\": {\"type\": \"quantitative\", \"field\": \"crime_count\"}, \"x\": {\"type\": \"nominal\", \"field\": \"month\"}, \"y\": {\"type\": \"nominal\", \"field\": \"crime_type\"}}, \"height\": 200, \"width\": 200, \"$schema\": \"https://vega.github.io/schema/vega-lite/v3.3.0.json\", \"datasets\": {\"data-6c27e0442d5189f4c44a697a9dd4bac2\": [{\"month\": \"January\", \"crime_type\": \"murder\", \"crime_count\": 1}, {\"month\": \"February\", \"crime_type\": \"murder\", \"crime_count\": 2}, {\"month\": \"March\", \"crime_type\": \"murder\", \"crime_count\": 3}, {\"month\": \"January\", \"crime_type\": \"theft\", \"crime_count\": 4}, {\"month\": \"February\", \"crime_type\": \"theft\", \"crime_count\": 5}, {\"month\": \"March\", \"crime_type\": \"theft\", \"crime_count\": 4}, {\"month\": \"January\", \"crime_type\": \"burglary\", \"crime_count\": 6}, {\"month\": \"February\", \"crime_type\": \"burglary\", \"crime_count\": 4}, {\"month\": \"March\", \"crime_type\": \"burglary\", \"crime_count\": 3}]}};\n", "var opt = {};\n", "var type = \"vega-lite\";\n", "var id = \"8ef15c1d-2b2f-4706-8478-1bdec98f16db\";\n", "\n", "var output_area = this;\n", "\n", "require([\"nbextensions/jupyter-vega/index\"], function(vega) {\n", " var target = document.createElement(\"div\");\n", " target.id = id;\n", " target.className = \"vega-embed\";\n", "\n", " var style = document.createElement(\"style\");\n", " style.textContent = [\n", " \".vega-embed .error p {\",\n", " \" color: firebrick;\",\n", " \" font-size: 14px;\",\n", " \"}\",\n", " ].join(\"\\\\n\");\n", "\n", " // element is a jQuery wrapped DOM element inside the output area\n", " // see http://ipython.readthedocs.io/en/stable/api/generated/\\\n", " // IPython.display.html#IPython.display.Javascript.__init__\n", " element[0].appendChild(target);\n", " element[0].appendChild(style);\n", "\n", " vega.render(\"#\" + id, spec, type, opt, output_area);\n", "}, function (err) {\n", " if (err.requireType !== \"scripterror\") {\n", " throw(err);\n", " }\n", "});\n" ], "text/plain": [ "" ] }, "metadata": { "jupyter-vega": "#8ef15c1d-2b2f-4706-8478-1bdec98f16db" }, "output_type": "display_data" }, { "data": { "text/plain": [] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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" }, "metadata": { "jupyter-vega": "#8ef15c1d-2b2f-4706-8478-1bdec98f16db" }, "output_type": "display_data" } ], "source": [ "import altair as alt\n", "alt.renderers.enable('notebook')\n", "\n", "# https://altair-viz.github.io/gallery/index.html\n", "chart = alt.Chart(melted, width=200, height=200).mark_circle().encode(\n", " x='month',\n", " y='crime_type',\n", " size='crime_count',\n", " color='crime_type'\n", ")\n", "chart" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can save it, too." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# https://altair-viz.github.io/user_guide/saving_charts.html\n", "chart.save('chart.svg')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.7" } }, "nbformat": 4, "nbformat_minor": 2 }