{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Introducing plotly.py 3.3.0\n", "In this notebook we introduce some of the exciting new features in plotly.py version 3.3.0. Please refer to the project [README](https://github.com/plotly/plotly.py#installation) for installation instructions. Now let's get started!" ] }, { "cell_type": "code", "execution_count": 140, "metadata": {}, "outputs": [], "source": [ "# Imports\n", "import plotly\n", "import plotly.graph_objs as go\n", "from plotly.offline import iplot, init_notebook_mode\n", "import ipywidgets as widgets" ] }, { "cell_type": "code", "execution_count": 141, "metadata": {}, "outputs": [], "source": [ "# Uncomment for use in classic notebook\n", "# init_notebook_mode()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Polar bar-char trace type\n", "Plotly.js version 1.41 introduces a new `barpolar` trace type for creating bar charts in polar coordinates. The popular [Wind Rose](https://en.wikipedia.org/wiki/Wind_rose) chart type can now be easily created as a collection of stacked `barpolar` traces.\n", "\n", "Figures with `barpolar` traces support rich interactions including polar-specific zoom, click-and-drag axis rotation, and lasso selection.\n", "\n", "![](barpolar_interactions.gif)" ] }, { "cell_type": "code", "execution_count": 109, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "r": [ 1, 3, 2, 4 ], "theta": [ 0, 22.5, 45, 67.5, 90 ], "type": "barpolar", "uid": "0ad89dda-c2a2-11e8-bc16-645aede86e5b" }, { "r": [ 3, 2, 4, 1 ], "theta": [ 0, 22.5, 45, 67.5, 90 ], "type": "barpolar", "uid": "0ad8a5be-c2a2-11e8-bc16-645aede86e5b" }, { "r": [ 2, 4, 1, 3 ], "theta": [ 0, 22.5, 45, 67.5, 90 ], "type": "barpolar", "uid": "0ad8a690-c2a2-11e8-bc16-645aede86e5b" } ], "layout": { "autosize": true, "polar": { "angularaxis": { "type": "linear" }, "radialaxis": { "autorange": true, "range": [ 0, 9.473684210526315 ], "type": "linear" } } } }, "image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAHCCAYAAABR8FlLAAAgAElEQVR4XuydB3QU1dvGX0rooQYh9N57kV4EqUoXkaqfyl9UbCgoiIgUQZpSBRQBKSLSVKQr0kSKVEEQBREQEBCkJ7TvPBcmbjZbZubObjbJc8/ZE0jm3rn3N7O7z7z3Lcnu3LlzR9hIgARIgARIgARIgARIwCaBZBSUNsmxGwmQAAmQAAmQAAmQgCJAQckbgQRIgARIgARIgARIQIsABaUWPnYmARIgARIgARIgARKgoOQ9QAIkQAIkQAIkQAIkoEWAglILHzuTAAmQAAmQAAmQAAlQUPIeIAESIAESIAESIAES0CJAQamFj51JgARIgARIgARIgAQoKHkPkAAJkAAJkAAJkAAJaBGgoNTCx84kQAIkQAIkQAIkQAIUlLwHSIAESIAESIAESIAEtAhQUGrhY2cSIAESIAESIAESIAEKSt4DJEACJEACJEACJEACWgQoKLXwsTMJkAAJkAAJkAAJkAAFJe8BEiABEiABEiABEiABLQIUlFr42JkESIAESIAESIAESICCkvcACZAACZAACZAACZCAFgEKSi187EwCJEACJEACJEACJEBByXuABEiABEiABEiABEhAiwAFpRY+diYBEiABEiABEiABEqCg5D1AAiRAAiRAAiRAAiSgRYCCUgsfO5MACZAACZAACZAACVBQ8h4gARIgARIgARIgARLQIkBBqYWPnUmABEiABEiABEiABCgoeQ+QAAmQAAmQAAmQAAloEaCg1MLHziRAAiRAAiRAAiRAAhSUvAdIgARIgARIgARIgAS0CFBQauFjZxIgARIgARIgARIgAQpK3gMkQAIkQAIkQAIkQAJaBCgotfCxMwmQAAmQAAmQAAmQAAUl7wESIAESIAESIAESIAEtAhSUWvjYmQRIgARIgARIgARIgIKS9wAJkAAJkAAJkAAJkIAWAQpKLXzsTAIkQAIkQAIkQAIkQEHJe4AESIAESIAESIAESECLAAWlFj52JgESIAESIAESIAESoKDkPUACJEACJEACJEACJKBFgIJSCx87kwAJkAAJkAAJkAAJUFDyHiABEiABEiABEiABEtAiQEGphY+dSYAESIAESIAESIAEKCh5D5AACZAACZAACZAACWgRoKDUwsfOJEACJEACJEACJEACFJS8B0iABEiABEiABEiABLQIUFBq4WNnEiABEiABEiABEiABCkreAyRAAiRAAiRAAiRAAloEKCi18LEzCZAACZAACZAACZAABSXvARIgARIgARIgARIgAS0CFJRa+NiZBEiABEiABEiABEiAgpL3AAmQAAmQAAmQAAmQgBYBCkotfOxMAiRAAiRAAiRAAiRAQcl7gARIgARIgARIgARIQIsABaUWPnYmARIgARIgARIgARKgoOQ9QAIkQAIkQAIkQAIkoEWAglILHzuTAAmQAAmQAAmQAAlQUPIeIAESIAESIAESIAES0CJAQamFj51JgARIgARIgARIgAQoKHkPkAAJkAAJkAAJkAAJaBGgoNTCx84kQAIkQAIkQAIkQAIUlLwHSIAESIAESIAESIAEtAhQUGrhY2cSIAESIAESIAESIAEKSt4DJEACJEACJEACJEACWgQoKLXwsTMJkAAJkAAJkAAJkAAFJe8BEiABEiABEiABEiABLQIUlFr42JkESIAESIAESIAESICCkvcACZAACZAACZAACZCAFgEKSi187EwCJEACJEACJEACJEBByXuABEiABEiABEiABEhAiwAFpRY+diYBEiABEiABEiABEqCg5D1AAiRAAiRAAiRAAiSgRYCCUgsfO5MACZAACZAACZAACVBQ8h4gARIgARIgARIgARLQIkBBqYWPnUmABEiABEiABEiABCgoeQ+QAAmQAAmQAAmQAAloEaCg1MLHziRAAiRAAiRAAiRAAhSUvAdIgARIgARIgARIgAS0CFBQauFjZxIgARIgARIgARIgAQpK3gMkQAIkQAIkQAIkQAJaBCgotfCxMwmQAAmQAAmQAAmQAAUl7wESIAESIAESIAESIAEtAhSUWvjYmQRIgARIgARIgARIgIKS9wAJkECiIHDlyhW5ceOGZMqUSZIlSxZnTRcuXJBbt25J1qxZ4/w9Ojparl69KpkzZ04ULLgIEiABEgg2AQrKYBPn+UiABBwlcOfOHRk2bJisXbtWjZs8eXIZPXq0lClTRv3/9u3b8s4778gPP/yg/n/ffffJhAkTJEuWLOr/3377rQwfPlz9O0eOHPLBBx9IRESEo3PkYCRAAiSQ2AlQUCb2K8z1kUAiJ/Dhhx/KV199JaNGjZKcOXMqQfjTTz/JvHnzJGPGjDJr1iyZPXu2jBkzRgnFF154QfLkyaNE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aAISlI0mrvuJgAhUSgCL5ejRo81pp51mBg8e3OPa9957r5kxY4aZN2+edWOPHTvWXHDBBWbrrbe2x15zzTVm4cKF5rrrrjMvvPCCOffcc+2xjHHjxpkTTjhBgrLSHdPFREAEOpGABGUn7qrWJAJdRGDRokXm9NNPNz/4wQ/MJptsstzKsWYiCrFMYoF8/vnnzeTJk83cuXPNGmusYY/98Y9/bG699VYrIrFs4hbHPb7yyiubq6++2sycOdNsuummXURUSxUBERCB8gQkKMsz0xkiIAItQuCtt96yAhCX9FlnnWV69eq13MywPi5YsMDMnz/f9O7d2/zmN78xxx577HKCkpjLu+66y9xyyy02jhKBOmvWLPPnP//ZHH744WbHHXdskdVqGiIgAiLQugQkKFt3bzQzERCBDALESh566KFmo402slbEeOIMYhNL48knn2x23XVXe6U0C+Vtt922TFAKugiIgAiIQHkCEpTlmekMERCBJhNwlsZBgwZZyySWxfiYNm2aWbx4sbVGkpzDIMN7v/32MxdeeKHZaqut7H/DivnAAw+YG264IfE6TV6qbi8CIiACbUFAgrIttkmTFAERcARee+01Q5mg1VZbzVx00UWGpBySbVZffXWb9c146aWXzLe+9S2DqIxmaFMWiIxuxqWXXmreeecdc9RRR9kYS6yZGiIgAiIgAn4EJCj9uOksERCBJhHAOnn00Uf3uPuIESNsCSBEI7Uj//CHP1hXeNx6iSscUUlRdMa2225rzjvvPNWabNJ+6rYiIAKdQUCCsjP2UasQAREoQQDRifsbV3hSp5wSl9KhIiACIiACxhgJSj0GIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQQkKIPw6WQREAEREAEREAEREAEJSj0DIiACIiACIiACIiACQQT+PwqTvWqFAXMcAAAAAElFTkSuQmCC" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "theta = [0, 22.5, 45, 67.5, 90]\n", "fig1 = go.Figure(data=[\n", " go.Barpolar(theta=theta, r=[1, 3, 2, 4]),\n", " go.Barpolar(theta=theta, r=[3, 2, 4, 1]),\n", " go.Barpolar(theta=theta, r=[2, 4, 1, 3])\n", "])\n", "iplot(fig1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When displayed in the notebook using a `FigureWidet`, you can also build `barpolar` traces interactively\n", "\n", "![](barpolar_widget.gif)" ] }, { "cell_type": "code", "execution_count": 119, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ffd368f6a132486ba1ac45dbc3efdb38", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FigureWidget({\n", " 'data': [], 'layout': {}\n", "})" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig2 = go.FigureWidget()\n", "fig2" ] }, { "cell_type": "code", "execution_count": 120, "metadata": {}, "outputs": [], "source": [ "bar0 = fig2.add_barpolar(theta=theta, r=[1, 3, 2, 4])" ] }, { "cell_type": "code", "execution_count": 121, "metadata": {}, "outputs": [], "source": [ "bar1 = fig2.add_barpolar(theta=theta, r=[3, 2, 4, 1])" ] }, { "cell_type": "code", "execution_count": 122, "metadata": {}, "outputs": [], "source": [ "bar2 = fig2.add_barpolar(theta=theta, r=[2, 4, 1, 3])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A new `layout.polar.hole` attribute has been added to bunch a hold in the middle of a polar subplots" ] }, { "cell_type": "code", "execution_count": 123, "metadata": {}, "outputs": [], "source": [ "fig2.layout.polar.hole = 0.2" ] }, { "cell_type": "code", "execution_count": 124, "metadata": {}, "outputs": [], "source": [ "fig2.layout.polar.angularaxis.rotation = 12.5" ] }, { "cell_type": "code", "execution_count": 125, "metadata": {}, "outputs": [], "source": [ "fig2.layout.polar.sector = [-10, 100]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can even register Python functions to execute in response to click, hover, and selection events!\n", "Let's display the indexes of selected `bar2` points in an ipywidgets output widget\n", "\n", "![](barpolar_selection.gif)" ] }, { "cell_type": "code", "execution_count": 127, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "14469339425549e78ecbdcd8f5482952", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(FigureWidget({\n", " 'data': [{'r': [1, 3, 2, 4],\n", " 'theta': [0, 22.5, 45, 67.5, 90],…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "out = widgets.Output()\n", "def do_selection(trace, points, state):\n", " out.clear_output()\n", " with out:\n", " print(points.point_inds)\n", "\n", "bar2.on_selection(do_selection)\n", "widgets.VBox([fig2, out])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Selection by click\n", "A new click selection mode has been introduced, allowing a point to be selected with a single click. Existing selections may also be extended by holding the shift key during click. For example, lets enable click selection on our barpolar `FigureWidget` above.\n", "\n", "![](barpolar_click_selection.gif)" ] }, { "cell_type": "code", "execution_count": 128, "metadata": {}, "outputs": [], "source": [ "fig2.layout.clickmode = 'event+select'" ] }, { "cell_type": "code", "execution_count": 129, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "8a7c25a3839c4501a0409f2679a6e3cf", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(FigureWidget({\n", " 'data': [{'r': [1, 3, 2, 4],\n", " 'theta': [0, 22.5, 45, 67.5, 90],…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "widgets.VBox([fig2, out])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Stacked Area Traces\n", "Stacked area traces are now directly supported by setting the new `scatter.stackgroup` property. All scatter traces that share the same stack group will automatically stack on top of one another, without the need to manually calculate the cumulative sum.\n", "\n", "![](stacked_area_widget.gif)" ] }, { "cell_type": "code", "execution_count": 131, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "adba1af937f9405da34f017573e06745", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FigureWidget({\n", " 'data': [], 'layout': {}\n", "})" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig3 = go.FigureWidget()\n", "fig3" ] }, { "cell_type": "code", "execution_count": 132, "metadata": {}, "outputs": [], "source": [ "x = [0, 1, 2, 3, 4]\n", "scatt0 = fig3.add_scatter(x=x, y=[2, 1, 3, 4, 4])" ] }, { "cell_type": "code", "execution_count": 133, "metadata": {}, "outputs": [], "source": [ "scatt1 = fig3.add_scatter(x=x, y=[1, 3, 4, 4, 1])" ] }, { "cell_type": "code", "execution_count": 134, "metadata": {}, "outputs": [], "source": [ "scatt2 = fig3.add_scatter(x=x, y=[3, 4, 4, 1, 2])" ] }, { "cell_type": "code", "execution_count": 135, "metadata": {}, "outputs": [], "source": [ "scatt0.stackgroup = 'A'" ] }, { "cell_type": "code", "execution_count": 136, "metadata": {}, "outputs": [], "source": [ "scatt1.stackgroup = 'A'" ] }, { "cell_type": "code", "execution_count": 137, "metadata": {}, "outputs": [], "source": [ "scatt2.stackgroup = 'A'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Read and write figures as JSON\n", "The new `read_json`, `write_json`, `from_json`, and `to_json` methods in the `plotly.io` package make it easy to convert a figure to and from a JSON string representation with a single command.\n", "\n", "The `plotly.io.to_json` function will convert a figure to a JSON string" ] }, { "cell_type": "code", "execution_count": 142, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{\n", " \"data\": [\n", " {\n", " \"r\": [\n", " 1,\n", " 3,\n", " 2,\n", " 4\n", " ],\n", " \"theta\": [\n", " 0,\n", " 22.5,\n", " 45,\n", " 67.5,\n", " 90\n", " ],\n", " \"type\": \"barpolar\"\n", " },\n", " {\n", " \"r\": [\n", " 3,\n", " 2,\n", " 4,\n", " 1\n", " ],\n", " \"theta\": [\n", " 0,\n", " 22.5,\n", " 45,\n", " 67.5,\n", " 90\n", " ],\n", " \"type\": \"barpolar\"\n", " },\n", " {\n", " \"r\": [\n", " 2,\n", " 4,\n", " 1,\n", " 3\n", " ],\n", " \"theta\": [\n", " 0,\n", " 22.5,\n", " 45,\n", " 67.5,\n", " 90\n", " ],\n", " \"type\": \"barpolar\"\n", " }\n", " ],\n", " \"layout\": {\n", " \"autosize\": true,\n", " \"clickmode\": \"event+select\",\n", " \"dragmode\": \"lasso\",\n", " \"polar\": {\n", " \"angularaxis\": {\n", " \"rotation\": 12.5\n", " },\n", " \"hole\": 0.2,\n", " \"sector\": [\n", " -10,\n", " 100\n", " ]\n", " }\n", " }\n", "}\n" ] } ], "source": [ "import plotly.io as pio\n", "print(pio.to_json(fig2, pretty=True))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `plotly.io.write_json` function will write the figure as a JSON string to a file or file-like object" ] }, { "cell_type": "code", "execution_count": 139, "metadata": {}, "outputs": [], "source": [ "pio.write_json(fig2, 'barpolar.plotly.json')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Viewing plotly JSON files in JupyterLab\n", "Thanks to the [`@jupyterlab/plotly-extension`](https://github.com/jupyterlab/jupyter-renderers/tree/master/packages/plotly-extension) JupyterLab extension, it's possible to open and interact with these `*.plotly.json` files from the file browser. No Python required.\n", "\n", "![](save_view_json.gif)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Odds and ends\n", "While developing this release we did a full review of the entire plotly.py issue backlog, which resluted in a whole set of long-request fixes and improvements.\n", "\n", "#### Other Added / Updated\n", " - Figures and graph objects now support `deepcopy` and `pickle` operations\n", " ([#1191](https://github.com/plotly/plotly.py/pull/1191))\n", " - The location of the `\"~/.plotly\"` settings directory may now be customized\n", " using the `PLOTLY_DIR` environment variable\n", " ([#1195](https://github.com/plotly/plotly.py/pull/1195))\n", " - Do not create or check permissions on the `~/.plotly` configuration\n", " directory until a configuration write operation is performed\n", " ([#1195](https://github.com/plotly/plotly.py/pull/1195)). This change\n", " avoids some concurrency problems associated with running many instances of\n", " plotly.py simultaneously\n", " ([#1068](https://github.com/plotly/plotly.py/issues/1068)).\n", " - Added optional `scaleratio` argument to the `create_quiver` figure factory.\n", " When specified, the axes are restricted to this ratio and the quiver arrows\n", " are computed to have consistent lengths across angles.\n", " ([#1197](https://github.com/plotly/plotly.py/pull/1197))\n", " \n", "#### Fixed\n", " - Replace use of `pkg_resources.resource_string` with `pkgutil.get_data` to\n", " improve compatibility with `cx_Freeze`\n", " ([#1201](https://github.com/plotly/plotly.py/pull/1201))\n", " - An exception is no longer raised when an optional dependency raises an\n", " exception on import. The exception is logged and plotly.py continues as if\n", " the dependency were not installed\n", " ([#1192](https://github.com/plotly/plotly.py/pull/1192))\n", " - Fixed invalid dendrogram axis labels when the points being clustered contain\n", " duplicate values\n", " ([#1186](https://github.com/plotly/plotly.py/pull/1186))\n", " - Added missing LICENSE.txt file to PyPI source distribution\n", " ([#765](https://github.com/plotly/plotly.py/issues/765))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Looking Ahead - Latex labels in the notebook\n", "Plotly.js has long supported Latex typesetting using MathJax, but it's never worked well in an offline environment or in the Jupyter Notebook. We've worked through the technical obstacles and anticipate that plotly.py version 3.4.0 will fully support offline MathJax Latex typesetting in the classic notebook, JupyterLab, standalone HTML files, and when exported to rastor/vector static images.\n", "\n", "Here's a work-in-progress preview of what's to come\n", "![](MathJax.gif)" ] }, { "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.7.0" } }, "nbformat": 4, "nbformat_minor": 2 }