{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "d9dcefd7-0655-4e71-99e3-2e6c8bb8ff7a", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "\n", "from lets_plot import *\n", "from lets_plot.plot.coord import coord_polar" ] }, { "cell_type": "code", "execution_count": 2, "id": "583c0c27-38fe-4ecb-8339-cb71c411a9c6", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "LetsPlot.setup_html()" ] }, { "cell_type": "markdown", "id": "aab8e2af-11bb-4238-857b-3d1a36caead0", "metadata": {}, "source": [ "#### Set `theme_gray()` as default theme. It improves plots readability." ] }, { "cell_type": "code", "execution_count": 3, "id": "d8c9764b-7387-45f9-89cd-c0bc0d8d3b62", "metadata": {}, "outputs": [], "source": [ "LetsPlot.set_theme(theme_grey())" ] }, { "cell_type": "markdown", "id": "dde1c0a0-7d07-4c60-914b-6b3f8ad18a6b", "metadata": {}, "source": [ "#### Data" ] }, { "cell_type": "code", "execution_count": 4, "id": "30e4e94e-4993-4472-a22c-436515f698d0", "metadata": {}, "outputs": [], "source": [ "labels_df = {\n", " 'x': [0, 1, 2, 3, 4, 5, 6, 7, 8],\n", " 'y': [0, 45, 90, 135, 180, 225, 270, 315, 360],\n", " 'r_y': [360, 315, 270, 225, 180, 135, 90, 45, 0],\n", " 'l': ['l0', 'l45', 'l90', 'l135', 'l180', 'l225', 'l270', 'l315', 'l360'],\n", " 'g': ['g1', 'g1', 'g1', 'g2', 'g2', 'g2', 'g3', 'g3', 'g3']\n", "}\n", "\n", "lollipop_df = {\n", " 'x': [1, 2, 3, 4, 5, 6],\n", " 'y': [1, 2, 3, 4, 5, 6],\n", "}" ] }, { "cell_type": "markdown", "id": "8735e2a4-69fe-4743-a332-1e0fb2d288ea", "metadata": {}, "source": [ "##### Util for `PlotSpecDebugger.kt`" ] }, { "cell_type": "code", "execution_count": 5, "id": "fd539de7-611a-4925-b51a-970748e8c318", "metadata": {}, "outputs": [], "source": [ "def dump_plot(plot, display=False):\n", " import json\n", "\n", " try:\n", " import clipboard\n", " except:\n", " clipboard = None\n", " \n", " from lets_plot._type_utils import standardize_dict\n", " \n", " plot_dict = standardize_dict(plot.as_dict())\n", " plot_json = json.dumps(plot_dict, indent=2)\n", " \n", " if clipboard:\n", " clipboard.copy('')\n", " clipboard.copy(str(plot_json))\n", " else:\n", " if display is None:\n", " display = True\n", "\n", " return plot" ] }, { "cell_type": "markdown", "id": "8b35bd2d-7d0f-4043-96fd-14de12139218", "metadata": {}, "source": [ "## `geom_label()`\n", "Regular scatter plot." ] }, { "cell_type": "code", "execution_count": 6, "id": "6e40d184-3eb6-47b6-aefc-e288c24daaba", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p = ggplot(labels_df, aes(x='x', y='y', label='l')) + geom_label()\n", "\n", "gggrid([\n", " p, \n", " p + coord_polar() + ggtitle('coord_polar()'),\n", " p + coord_polar(theta='y') + ggtitle('theta=y'),\n", "])" ] }, { "cell_type": "markdown", "id": "8d9114cf-ce6e-4076-a7ef-8e7d78b27c58", "metadata": {}, "source": [ "With discrete `x` the domain is extended so that the first value doesn't overlap the last (see breaks and position of `l0` and `l360` in contrast with the previous cell):" ] }, { "cell_type": "code", "execution_count": 7, "id": "f92506c1-b117-4e60-88bd-3f8083c49a93", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p = ggplot(labels_df, aes(x='l', y='y', label='l')) + geom_label()\n", "\n", "p + coord_polar()" ] }, { "cell_type": "markdown", "id": "72d0487a-2109-4af5-aa8e-7909bc9983ae", "metadata": {}, "source": [ "## `geom_path()`\n", "The transform resamples path data by converting straight segments into curves. The `flat` parameter controls this behaviour." ] }, { "cell_type": "code", "execution_count": 8, "id": "96f14457-ba1d-4e9e-86bf-40b206b7c719", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p = ggplot(labels_df, aes(x='x', y='y', color='y')) + scale_color_brewer(palette='GnBu')\n", "\n", "gggrid([\n", " p + geom_path(size=3) + coord_polar() + ggtitle('coord_polar()'),\n", " p + geom_path(size=3, flat=True) + coord_polar(theta=\"x\") + ggtitle('coord_polar(), flat=True'),\n", "], ncol=2)" ] }, { "cell_type": "markdown", "id": "ada8aadb-937d-40a1-a94c-7ffbdf7eb08c", "metadata": {}, "source": [ "## `geom_lollipop()`\n", "See the `Params` section for details on using the `xlim` parameter." ] }, { "cell_type": "code", "execution_count": 9, "id": "0320c4d7-c628-41cd-864b-46e324a49b0a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p = ggplot(lollipop_df, aes('x', 'y')) + geom_lollipop()\n", "\n", "gggrid([\n", " p, \n", " p + coord_polar(xlim=[1, 7])\n", "])" ] }, { "cell_type": "markdown", "id": "7694446c-90e8-4486-86e0-2e954e641ae9", "metadata": {}, "source": [ "## `geom_rect()`\n", "### Stacked rects are transformed into a pie chart" ] }, { "cell_type": "code", "execution_count": 10, "id": "9bb6db8c-255c-45d8-81db-7ee7a4967a5e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", " " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "p = ggplot() \\\n", " + geom_rect(xmin=0, xmax=5, ymin=0, ymax=7, fill='red', size=0) \\\n", " + geom_rect(xmin=0, xmax=5, ymin=7, ymax=11, fill='blue', size=0) \\\n", " + geom_rect(xmin=0, xmax=5, ymin=11, ymax=14, fill='green', size=0) \n", "\n", "gggrid([\n", " p,\n", " p + coord_polar() + ggtitle('coord_polar()'),\n", " p + coord_polar(theta='y') + ggtitle('coord_polar(theta=y)'),\n", "]).show()\n", "\n", "gggrid([\n", " p + coord_polar(theta='y', direction=-1) + ggtitle('coord_polar(theta=y, dir=-1)'),\n", " p + coord_polar(theta='y', direction=-1, start=3.14/2) + ggtitle('coord_polar(theta=y, dir=-1, start=PI/2)'),\n", "]).show()\n", "\n" ] }, { "cell_type": "markdown", "id": "b4bf289b-6dc1-480a-ac3a-74c67f7753ee", "metadata": {}, "source": [ "### Dodged rects are transformed into something interesting" ] }, { "cell_type": "code", "execution_count": 11, "id": "cb9b984e-2d44-4f69-81af-3a2ca041486a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p = ggplot() \\\n", " + geom_rect(xmin=0, xmax=1, ymin=0, ymax=7, fill='red', size=0) \\\n", " + geom_rect(xmin=1, xmax=2, ymin=0, ymax=4, fill='blue', size=0) \\\n", " + geom_rect(xmin=2, xmax=3, ymin=0, ymax=3, fill='green', size=0) \\\n", "\n", "gggrid([\n", " p, \n", " p + coord_polar(theta='y') + ggtitle('coord_polar(theta=y)'),\n", " p + coord_polar(theta='x') + ggtitle('coord_polar(theta=x)'),\n", "])" ] }, { "cell_type": "markdown", "id": "a3ef9622-e954-4e13-afc9-ec3f88ed0095", "metadata": {}, "source": [ "## `geom_bar()` \n", "This works similarly to rects, but with the addition of tooltips." ] }, { "cell_type": "code", "execution_count": 12, "id": "30186743-624a-46a7-ab08-fd1514d43338", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from lets_plot.mapping import as_discrete\n", "bar_df = { 'foo': [1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3] }\n", "p = ggplot(bar_df) + geom_bar(aes(fill=as_discrete('foo', order=1)), size=0)\n", "\n", "gggrid([\n", " p,\n", " p + coord_polar(theta='y') + ggtitle('position=stack, coord_polar(theta=y)'),\n", " p + coord_polar(theta='x') + ggtitle('position=stack, coord_polar(theta=x)'),\n", "])" ] }, { "cell_type": "code", "execution_count": 13, "id": "9b2ffa58-b0b6-43d7-84fb-609787bed197", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p = ggplot(bar_df) + geom_bar(aes(fill=as_discrete('foo', order=1)), size=0, position='dodge')\n", "\n", "gggrid([\n", " p,\n", " p + coord_polar(theta='y') + ggtitle('position=dodge, coord_polar(theta=y)'),\n", " p + coord_polar(theta='x') + ggtitle('position=dodge, coord_polar(theta=x)'),\n", "])" ] }, { "cell_type": "markdown", "id": "80d6bfb1-7c22-4f67-86b0-72950226006d", "metadata": {}, "source": [ "# Params" ] }, { "cell_type": "code", "execution_count": 14, "id": "49e237f7", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p = ggplot(labels_df, aes(x='x', y='y', color='y')) + geom_path(size=3, show_legend=False) + scale_color_brewer(palette='GnBu')\n", "\n", "p + coord_polar() + ggtitle('Default plot with coord_polar()')" ] }, { "cell_type": "markdown", "id": "cdad750f", "metadata": {}, "source": [ "### `direction`" ] }, { "cell_type": "code", "execution_count": 15, "id": "dbb23e44-e337-4f53-8edf-f4fcbcab20c5", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "(p + coord_polar(direction=-1) + ggtitle('coord_polar(direction=-1)')).show()" ] }, { "cell_type": "markdown", "id": "d51a2e47", "metadata": {}, "source": [ "### `start`" ] }, { "cell_type": "code", "execution_count": 16, "id": "a1f157de", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "gggrid([\n", " p + coord_polar(start=3.14 / 2) + ggtitle('start=PI/2'),\n", " p + coord_polar(start=-3.14 / 2) + ggtitle('start=-PI/2'),\n", "]).show()" ] }, { "cell_type": "markdown", "id": "24860c8b", "metadata": {}, "source": [ "### `direction` + `start`" ] }, { "cell_type": "code", "execution_count": 17, "id": "65a481fb", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gggrid([\n", " p + coord_polar(start=3.14 / 2, direction=-1) + ggtitle('dir=-1, start=PI/2'),\n", " p + coord_polar(start=-3.14 / 2, direction=-1) + ggtitle('dir=-1, start=-PI/2'),\n", "])" ] }, { "cell_type": "markdown", "id": "76c24f6c", "metadata": {}, "source": [ "### `xlim`\n", "Allows to fix overlapping between first and last value, e.g. for `geom_lollipop` or `radar`." ] }, { "cell_type": "code", "execution_count": 18, "id": "08509618", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p = ggplot(lollipop_df, aes('x', 'y')) + geom_lollipop()\n", "\n", "gggrid([\n", " p + coord_polar(),\n", " p + coord_polar(xlim=[1, 7])\n", "])" ] }, { "cell_type": "markdown", "id": "21a0910b-6062-401c-9d28-74e628ba4d88", "metadata": {}, "source": [ "### `ylim`\n", "Move data from the center. Usefull for radar plot." ] }, { "cell_type": "code", "execution_count": 19, "id": "4ee5b863-d69c-4ed0-9835-2f90c3752eb3", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = {\n", " 'subj': ['progr', 'math', 'physic', 'chemistry', 'biology'],\n", " 'subj_id': [1, 2, 3, 4, 5],\n", " 'student': ['John'] * 5,\n", " 'score': [19, 15, 18, 12, 9]\n", "}\n", "\n", "p = ggplot(data) \\\n", " + geom_path(aes(x='subj', y='score', color='student'), flat=True) \\\n", " + geom_point(aes(x='subj', y='score', color='student'))\n", "\n", "gggrid([\n", " p + coord_polar(),\n", " p + coord_polar(ylim=[0, 20])\n", "]) " ] }, { "cell_type": "markdown", "id": "6dca2b38-1afc-4230-bc71-5d4dd90ea508", "metadata": {}, "source": [ "# Issues" ] }, { "cell_type": "markdown", "id": "a124d885-097a-451c-b229-d38de255146c", "metadata": {}, "source": [ "1. Tick labels may be rotated" ] }, { "cell_type": "code", "execution_count": 20, "id": "08d9b87e-825e-4258-a2ba-09f023f92ec9", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = {\n", " 'x': ['long txt 1', 'long txt 2', 'long txt 3', 'long txt 4'],\n", " 'y': [1, 2, 3, 4],\n", "}\n", "ggplot(data, aes('x', 'y')) + geom_point() + coord_polar()" ] }, { "cell_type": "markdown", "id": "cf32720a-a71b-466c-8360-b82701b52519", "metadata": {}, "source": [ "2. Tick labels tend to overlap" ] }, { "cell_type": "code", "execution_count": 21, "id": "fafd5715-d48b-4445-8496-37f5d6ef792c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = {\n", " 'x': ['txt 1', 'txt 2', 'txt 3', 'txt 4'],\n", " 'y': [1, 2, 3, 4],\n", "}\n", "ggplot(data, aes('x', 'y')) + geom_point() + coord_polar()" ] }, { "cell_type": "markdown", "id": "95fdeb53-fb6f-4d4e-9343-ce870c94e8c4", "metadata": {}, "source": [ "3. Vertical ticks are too dense when ticks rotation happens:" ] }, { "cell_type": "code", "execution_count": 22, "id": "19bf97e3-a345-4449-863d-0b0ccbdc7d99", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = {\n", " 'x': ['long txt 1', 'long txt 2', 'long txt 3', 'long txt 4'],\n", " 'y': [1, 2, 3, 4],\n", "}\n", "ggplot(data, aes('x', 'y')) + geom_point() + coord_polar()" ] }, { "cell_type": "markdown", "id": "6897eca4-57f6-43f8-9ad3-337092a809a3", "metadata": {}, "source": [ "# Regressions" ] }, { "cell_type": "markdown", "id": "2d63f55b-5f91-4ef7-854c-9db6d38edd6e", "metadata": {}, "source": [ "Make sure that axis and grid alignment is still working in all cases:\n", "- coord_flip\n", "- title\n", "- top/bottom/left/right\n", "- marginal\n", "- facet" ] }, { "cell_type": "code", "execution_count": 23, "id": "2de05a0a-e958-49de-9fb7-993ea8c66cee", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p = ggplot(labels_df, aes(x='x', y='y', color='y')) + geom_path(size=3) + scale_color_brewer(palette='GnBu') + theme_light()\n", "default = p + ggtitle('Default')\n", "both = p + scale_x_continuous(position='both') + scale_y_continuous(position='both') + ggtitle('Both')\n", "flip = p + coord_flip() + ggtitle('coord_flip()')\n", "flip_both = p + scale_x_continuous(position='both') + scale_y_continuous(position='both') + coord_flip() + ggtitle('both + coord_flip()')\n", "facet = p + facet_grid(x='g') + ggtitle('Facet')\n", "facet_both = both + facet_grid(x='g') + ggtitle('Facet Both')\n", "facet_flip = flip + facet_grid(x='g') + ggtitle('Facet Flip')\n", "facet_flip_both = flip_both + facet_grid(x='g') + ggtitle('Facet Flip Both')\n", "\n", "g = gggrid([\n", " default,\n", " both,\n", " flip,\n", " flip_both,\n", " facet, \n", " facet_both,\n", " facet_flip,\n", " facet_flip_both\n", "], ncol=1)\n", "\n", "g" ] }, { "cell_type": "markdown", "id": "1c8ccac9-543c-433e-8eb4-43e30e717552", "metadata": {}, "source": [ "Single plot review:" ] }, { "cell_type": "code", "execution_count": 24, "id": "cf807fb5-571a-4922-adbc-996831ec4a35", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p = ggplot(labels_df, aes(x='x', y='y', label='l')) + geom_label()\n", "\n", "p_rect_stack = ggplot() \\\n", " + geom_rect(xmin=0, xmax=5, ymin=0, ymax=7, fill='red', size=0) \\\n", " + geom_rect(xmin=0, xmax=5, ymin=7, ymax=11, fill='blue', size=0) \\\n", " + geom_rect(xmin=0, xmax=5, ymin=11, ymax=14, fill='green', size=0) \\\n", "\n", "\n", "p_rect_dodge = ggplot() \\\n", " + geom_rect(xmin=0, xmax=1, ymin=0, ymax=7, fill='red', size=0) \\\n", " + geom_rect(xmin=1, xmax=2, ymin=0, ymax=4, fill='blue', size=0) \\\n", " + geom_rect(xmin=2, xmax=3, ymin=0, ymax=3, fill='green', size=0) \\\n", "\n", "gggrid([\n", " p_rect_dodge, \n", " p_rect_dodge + coord_polar(theta='y') + ggtitle('coord_polar(theta=y)'),\n", " p_rect_dodge + coord_polar(theta='x') + ggtitle('coord_polar(theta=x)'),\n", "])\n", "\n", "from lets_plot.mapping import as_discrete\n", "bar_df = { 'foo': [1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3] }\n", "p_bar_stack = ggplot(bar_df) + geom_bar(aes(fill=as_discrete('foo', order=1)), size=0)\n", "p_bar_dodge = ggplot(bar_df) + geom_bar(aes(fill=as_discrete('foo', order=1)), size=0, position='dodge')\n", "\n", "# lollipop\n", "p_lollipop = ggplot(lollipop_df, aes('x', 'y')) + geom_lollipop() + coord_polar(xlim=[1, 7])\n", "\n", "# radar\n", "data = {\n", " 'subj': ['a', 'b', 'c', 'd', 'e'],\n", " 'subj_id': [1, 2, 3, 4, 5],\n", " 'student': ['John'] * 5,\n", " 'score': [19, 15, 18, 12, 9]\n", "}\n", "\n", "p_radar = ggplot(data) \\\n", " + geom_path(aes(x='subj', y='score', color='student'), flat=True) \\\n", " + geom_point(aes(x='subj', y='score', color='student'))\\\n", " + coord_polar(ylim=[0, 20])\n", "\n", "gggrid([\n", " p + coord_polar() + ggtitle('coord_polar()'),\n", " p + coord_polar(theta='y') + ggtitle('theta=y'),\n", " None,\n", " p_rect_stack + coord_polar(theta='y') + ggtitle('coord_polar(theta=y)'),\n", " p_rect_stack + coord_polar(theta='y', direction=-1) + ggtitle('coord_polar(theta=y, dir=-1)'),\n", " p_rect_stack + coord_polar(theta='x') + ggtitle('coord_polar(theta=x)'),\n", " p_rect_dodge, \n", " p_rect_dodge + coord_polar(theta='y') + ggtitle('coord_polar(theta=y)'),\n", " p_rect_dodge + coord_polar(theta='x') + ggtitle('coord_polar(theta=x)'),\n", " p_bar_stack,\n", " p_bar_stack + coord_polar(theta='y') + ggtitle('position=stack, coord_polar(theta=y)'),\n", " p_bar_stack + coord_polar(theta='x') + ggtitle('position=stack, coord_polar(theta=x)'),\n", " p_bar_dodge,\n", " p_bar_dodge + coord_polar(theta='y') + ggtitle('position=dodge, coord_polar(theta=y)'),\n", " p_bar_dodge + coord_polar(theta='x') + ggtitle('position=dodge, coord_polar(theta=x)'),\n", " p_lollipop,\n", " p_radar\n", "], ncol=3)" ] }, { "cell_type": "markdown", "id": "41ca7827-4f2d-49fa-80c1-2663666c9345", "metadata": {}, "source": [ "# Sandbox" ] }, { "cell_type": "code", "execution_count": 25, "id": "ef0e7037-76f6-4cdf-9e4d-5832120fc512", "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", " \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", " \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", "
Unnamed: 0manufacturermodeldisplyearcyltransdrvctyhwyflclass
01audia41.819994auto(l5)f1829pcompact
12audia41.819994manual(m5)f2129pcompact
23audia42.020084manual(m6)f2031pcompact
34audia42.020084auto(av)f2130pcompact
45audia42.819996auto(l5)f1626pcompact
.......................................
229230volkswagenpassat2.020084auto(s6)f1928pmidsize
230231volkswagenpassat2.020084manual(m6)f2129pmidsize
231232volkswagenpassat2.819996auto(l5)f1626pmidsize
232233volkswagenpassat2.819996manual(m5)f1826pmidsize
233234volkswagenpassat3.620086auto(s6)f1726pmidsize
\n", "

234 rows × 12 columns

\n", "
" ], "text/plain": [ " Unnamed: 0 manufacturer model displ year cyl trans drv cty \\\n", "0 1 audi a4 1.8 1999 4 auto(l5) f 18 \n", "1 2 audi a4 1.8 1999 4 manual(m5) f 21 \n", "2 3 audi a4 2.0 2008 4 manual(m6) f 20 \n", "3 4 audi a4 2.0 2008 4 auto(av) f 21 \n", "4 5 audi a4 2.8 1999 6 auto(l5) f 16 \n", ".. ... ... ... ... ... ... ... .. ... \n", "229 230 volkswagen passat 2.0 2008 4 auto(s6) f 19 \n", "230 231 volkswagen passat 2.0 2008 4 manual(m6) f 21 \n", "231 232 volkswagen passat 2.8 1999 6 auto(l5) f 16 \n", "232 233 volkswagen passat 2.8 1999 6 manual(m5) f 18 \n", "233 234 volkswagen passat 3.6 2008 6 auto(s6) f 17 \n", "\n", " hwy fl class \n", "0 29 p compact \n", "1 29 p compact \n", "2 31 p compact \n", "3 30 p compact \n", "4 26 p compact \n", ".. ... .. ... \n", "229 28 p midsize \n", "230 29 p midsize \n", "231 26 p midsize \n", "232 26 p midsize \n", "233 26 p midsize \n", "\n", "[234 rows x 12 columns]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mpg = pd.read_csv('https://raw.githubusercontent.com/JetBrains/lets-plot-docs/master/data/mpg.csv')\n", "mpg" ] }, { "cell_type": "code", "execution_count": 26, "id": "6fa7473d-ff22-4f50-af2f-8ecf0c4f3352", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ggplot(mpg) + geom_bar(aes(x='model', y='cty', fill='cty'), stat='identity', position='dodge') + scale_fill_gradient(low='red', high='white', limits=(5,40)) + theme_void()" ] }, { "cell_type": "code", "execution_count": 27, "id": "9fa509f9-1b45-4add-aeb6-d58cf9264805", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "_ + coord_polar()" ] }, { "cell_type": "code", "execution_count": 28, "id": "abffaf6c-cdbd-4e94-9736-f9ae43b9ba25", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p = ggplot(labels_df, aes(x='x', y='y', label='l')) + geom_point(alpha=0.3, color='red') + geom_text()\n", "gggrid([\n", " p + coord_polar(theta='x'),\n", " p + coord_polar(theta='y'),\n", "])" ] }, { "cell_type": "markdown", "id": "f57e8ca7-d6bd-4303-bc91-8fe64dd0ba36", "metadata": {}, "source": [ "# `ggplot2` ticks comparison:" ] }, { "cell_type": "code", "execution_count": 29, "id": "c74887bd-1162-473e-85d5-dd79d8019be7", "metadata": {}, "outputs": [], "source": [ "from IPython.display import SVG, Image, HTML" ] }, { "cell_type": "code", "execution_count": 30, "id": "be26a1d5-684d-47b1-a899-adb7bf70b39d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p = ggplot() \\\n", " + geom_rect(xmin=-5, xmax=0, ymin=0, ymax=5, fill='red', size=0) \\\n", " + geom_rect(xmin=-5, xmax=0, ymin=5, ymax=7.5, fill='green', size=0) \\\n", " + theme_grey()\n", "p" ] }, { "cell_type": "code", "execution_count": 31, "id": "66c6860c-8844-4531-b370-6930effc4be2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Actual:\n" ] }, { "data": { "text/html": [ "
\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Expected (ggplot2)\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print(\"Actual:\")\n", "(p + coord_polar(theta = \"x\")).show()\n", "\n", "print(\"Expected (ggplot2)\")\n", "display(Image(\"lets-plot-images/coord_polar_ggplot_theta_x.png\"))" ] }, { "cell_type": "code", "execution_count": 32, "id": "da00873b-7681-4eda-afba-b64f1b612c31", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Actual\n" ] }, { "data": { "text/html": [ "
\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Expected (ggplot2):\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print(\"Actual\")\n", "(p + coord_polar(theta = \"y\")).show()\n", "print(\"Expected (ggplot2):\")\n", "display(Image(\"lets-plot-images/coord_polar_ggplot_theta_y.png\"))" ] } ], "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.8.15" } }, "nbformat": 4, "nbformat_minor": 5 }