{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Examples of plotly-scala with Almond" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\u001b[32mimport \u001b[39m\u001b[36m$ivy.$ \n", "\n", "\u001b[39m\n", "\u001b[32mimport \u001b[39m\u001b[36mplotly._\n", "\u001b[39m\n", "\u001b[32mimport \u001b[39m\u001b[36mplotly.element._\n", "\u001b[39m\n", "\u001b[32mimport \u001b[39m\u001b[36mplotly.layout._\n", "\u001b[39m\n", "\u001b[32mimport \u001b[39m\u001b[36mplotly.Almond._\n", "\n", "// if you want to have the plots available without an internet connection:\n", "// init(offline=true)\u001b[39m" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import $ivy.`org.plotly-scala::plotly-almond:0.5.2`\n", "\n", "import plotly._\n", "import plotly.element._\n", "import plotly.layout._\n", "import plotly.Almond._\n", "\n", "// if you want to have the plots available without an internet connection:\n", "// init(offline=true)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Line Charts\n", "## Basic Line Chart" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "type": "scatter", "x": [ 1, 2, 3, 4 ], "y": [ 10, 15, 13, 17 ] }, { "type": "scatter", "x": [ 1, 2, 3, 4 ], "y": [ 16, 5, 11, 9 ] } ], "layout": {} }, "text/html": [ "
\n", "\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[36mtrace1\u001b[39m: \u001b[32mScatter\u001b[39m = \u001b[33mScatter\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m1.0\u001b[39m, \u001b[32m2.0\u001b[39m, \u001b[32m3.0\u001b[39m, \u001b[32m4.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m10.0\u001b[39m, \u001b[32m15.0\u001b[39m, \u001b[32m13.0\u001b[39m, \u001b[32m17.0\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", ")\n", "\u001b[36mtrace2\u001b[39m: \u001b[32mScatter\u001b[39m = \u001b[33mScatter\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m1.0\u001b[39m, \u001b[32m2.0\u001b[39m, \u001b[32m3.0\u001b[39m, \u001b[32m4.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m16.0\u001b[39m, \u001b[32m5.0\u001b[39m, \u001b[32m11.0\u001b[39m, \u001b[32m9.0\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", ")\n", "\u001b[36mdata\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mScatter\u001b[39m] = \u001b[33mList\u001b[39m(\n", " \u001b[33mScatter\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m1.0\u001b[39m, \u001b[32m2.0\u001b[39m, \u001b[32m3.0\u001b[39m, \u001b[32m4.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m10.0\u001b[39m, \u001b[32m15.0\u001b[39m, \u001b[32m13.0\u001b[39m, \u001b[32m17.0\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " ),\n", " \u001b[33mScatter\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m1.0\u001b[39m, \u001b[32m2.0\u001b[39m, \u001b[32m3.0\u001b[39m, \u001b[32m4.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m16.0\u001b[39m, \u001b[32m5.0\u001b[39m, \u001b[32m11.0\u001b[39m, \u001b[32m9.0\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", "...\n", "\u001b[36mres1_3\u001b[39m: \u001b[32mString\u001b[39m = \u001b[32m\"plot-133448550\"\u001b[39m" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val trace1 = Scatter(\n", " Seq(1, 2, 3, 4),\n", " Seq(10, 15, 13, 17)\n", ")\n", "\n", "val trace2 = Scatter(\n", " Seq(1, 2, 3, 4),\n", " Seq(16, 5, 11, 9)\n", ")\n", "\n", "val data = Seq(trace1, trace2)\n", "\n", "plot(data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Line and Scatter Plot" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "mode": "markers", "type": "scatter", "x": [ 1, 2, 3, 4 ], "y": [ 10, 15, 13, 17 ] }, { "mode": "lines", "type": "scatter", "x": [ 2, 3, 4, 5 ], "y": [ 16, 5, 11, 9 ] }, { "mode": "lines+markers", "type": "scatter", "x": [ 1, 2, 3, 4 ], "y": [ 12, 9, 15, 12 ] } ], "layout": { "title": "Line and Scatter Plot" } }, "text/html": [ "
\n", "\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[36mtrace1\u001b[39m: \u001b[32mScatter\u001b[39m = \u001b[33mScatter\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m1.0\u001b[39m, \u001b[32m2.0\u001b[39m, \u001b[32m3.0\u001b[39m, \u001b[32m4.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m10.0\u001b[39m, \u001b[32m15.0\u001b[39m, \u001b[32m13.0\u001b[39m, \u001b[32m17.0\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mScatterMode\u001b[39m(\u001b[33mSet\u001b[39m(Markers))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", ")\n", "\u001b[36mtrace2\u001b[39m: \u001b[32mScatter\u001b[39m = \u001b[33mScatter\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m2.0\u001b[39m, \u001b[32m3.0\u001b[39m, \u001b[32m4.0\u001b[39m, \u001b[32m5.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m16.0\u001b[39m, \u001b[32m5.0\u001b[39m, \u001b[32m11.0\u001b[39m, \u001b[32m9.0\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mScatterMode\u001b[39m(\u001b[33mSet\u001b[39m(Lines))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", ")\n", "\u001b[36mtrace3\u001b[39m: \u001b[32mScatter\u001b[39m = \u001b[33mScatter\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m1.0\u001b[39m, \u001b[32m2.0\u001b[39m, \u001b[32m3.0\u001b[39m, \u001b[32m4.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m12.0\u001b[39m, \u001b[32m9.0\u001b[39m, \u001b[32m15.0\u001b[39m, \u001b[32m12.0\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mScatterMode\u001b[39m(\u001b[33mSet\u001b[39m(Lines, Markers))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", ")\n", "\u001b[36mdata\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mScatter\u001b[39m] = \u001b[33mList\u001b[39m(\n", " \u001b[33mScatter\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m1.0\u001b[39m, \u001b[32m2.0\u001b[39m, \u001b[32m3.0\u001b[39m, \u001b[32m4.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m10.0\u001b[39m, \u001b[32m15.0\u001b[39m, \u001b[32m13.0\u001b[39m, \u001b[32m17.0\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mScatterMode\u001b[39m(\u001b[33mSet\u001b[39m(Markers))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " ),\n", " \u001b[33mScatter\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m2.0\u001b[39m, \u001b[32m3.0\u001b[39m, \u001b[32m4.0\u001b[39m, \u001b[32m5.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m16.0\u001b[39m, \u001b[32m5.0\u001b[39m, \u001b[32m11.0\u001b[39m, \u001b[32m9.0\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mScatterMode\u001b[39m(\u001b[33mSet\u001b[39m(Lines))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", "...\n", "\u001b[36mlayout\u001b[39m: \u001b[32mLayout\u001b[39m = \u001b[33mLayout\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[32m\"Line and Scatter Plot\"\u001b[39m),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", ")\n", "\u001b[36mres2_5\u001b[39m: \u001b[32mString\u001b[39m = \u001b[32m\"plot-136470585\"\u001b[39m" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val trace1 = Scatter(\n", " Seq(1, 2, 3, 4),\n", " Seq(10, 15, 13, 17),\n", " mode = ScatterMode(ScatterMode.Markers)\n", ")\n", "\n", "val trace2 = Scatter(\n", " Seq(2, 3, 4, 5),\n", " Seq(16, 5, 11, 9),\n", " mode = ScatterMode(ScatterMode.Lines)\n", ")\n", "\n", "val trace3 = Scatter(\n", " Seq(1, 2, 3, 4),\n", " Seq(12, 9, 15, 12),\n", " mode = ScatterMode(ScatterMode.Lines, ScatterMode.Markers)\n", ")\n", "\n", "val data = Seq(trace1, trace2, trace3)\n", "\n", "val layout = Layout(\n", " title = \"Line and Scatter Plot\"\n", ")\n", "\n", "plot(data, layout)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Scatter Plots\n", "## Categorical Dot Plot" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "marker": { "color": "rgba(156, 165, 196, 0.95)", "line": { "color": "rgba(156, 165, 196, 1.0)", "width": 1 }, "size": 16, "symbol": "circle" }, "mode": "markers", "name": "Percent of estimated voting age population", "type": "scatter", "x": [ 40, 45.7, 52, 53.6, 54.1, 54.2, 54.5, 54.7, 55.1, 56.6 ], "y": [ "Switzerland (2011)", "Chile (2013)", "Japan (2014)", "United States (2012)", "Slovenia (2014)", "Canada (2011)", "Poland (2010)", "Estonia (2015)", "Luxembourg (2013)", "Portugal (2011)" ] }, { "marker": { "color": "rgba(204, 204, 204, 0.95)", "line": { "color": "rgba(217, 217, 217, 1.0)", "width": 1 }, "size": 16, "symbol": "circle" }, "mode": "markers", "name": "Percent of estimated registered voters", "type": "scatter", "x": [ 49.1, 42, 52.7, 84.3, 51.7, 61.1, 55.3, 64.2, 91.1, 58.9 ], "y": [ "Switzerland (2011)", "Chile (2013)", "Japan (2014)", "United States (2012)", "Slovenia (2014)", "Canada (2011)", "Poland (2010)", "Estonia (2015)", "Luxembourg (2013)", "Portugal (2011)" ] } ], "layout": { "height": 400, "hovermode": "closest", "legend": { "font": { "size": 10 }, "xanchor": "right", "yanchor": "middle" }, "margin": { "b": 50, "l": 140, "r": 40, "t": 80 }, "paper_bgcolor": "rgb(254, 247, 234)", "plot_bgcolor": "rgb(254, 247, 234)", "title": "Votes cast for ten lowest voting age population in OECD countries", "width": 600, "xaxis": { "autotick": false, "dtick": 10, "linecolor": "rgb(102, 102, 102)", "showgrid": false, "showline": true, "tickcolor": "rgb(102, 102, 102)", "tickfont": { "color": "rgb(102, 102, 102)" }, "ticks": "outside", "titlefont": { "color": "rgb(204, 204, 204)" } } } }, "text/html": [ "
\n", "\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[36mcountry\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mString\u001b[39m] = \u001b[33mList\u001b[39m(\n", " \u001b[32m\"Switzerland (2011)\"\u001b[39m,\n", " \u001b[32m\"Chile (2013)\"\u001b[39m,\n", " \u001b[32m\"Japan (2014)\"\u001b[39m,\n", " \u001b[32m\"United States (2012)\"\u001b[39m,\n", " \u001b[32m\"Slovenia (2014)\"\u001b[39m,\n", " \u001b[32m\"Canada (2011)\"\u001b[39m,\n", " \u001b[32m\"Poland (2010)\"\u001b[39m,\n", " \u001b[32m\"Estonia (2015)\"\u001b[39m,\n", " \u001b[32m\"Luxembourg (2013)\"\u001b[39m,\n", " \u001b[32m\"Portugal (2011)\"\u001b[39m\n", ")\n", "\u001b[36mvotingPop\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mDouble\u001b[39m] = \u001b[33mList\u001b[39m(\n", " \u001b[32m40.0\u001b[39m,\n", " \u001b[32m45.7\u001b[39m,\n", " \u001b[32m52.0\u001b[39m,\n", " \u001b[32m53.6\u001b[39m,\n", " \u001b[32m54.1\u001b[39m,\n", " \u001b[32m54.2\u001b[39m,\n", " \u001b[32m54.5\u001b[39m,\n", " \u001b[32m54.7\u001b[39m,\n", " \u001b[32m55.1\u001b[39m,\n", " \u001b[32m56.6\u001b[39m\n", ")\n", "\u001b[36mregVoters\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mDouble\u001b[39m] = \u001b[33mList\u001b[39m(\n", " \u001b[32m49.1\u001b[39m,\n", " \u001b[32m42.0\u001b[39m,\n", " \u001b[32m52.7\u001b[39m,\n", " \u001b[32m84.3\u001b[39m,\n", " \u001b[32m51.7\u001b[39m,\n", " \u001b[32m61.1\u001b[39m,\n", " \u001b[32m55.3\u001b[39m,\n", " \u001b[32m64.2\u001b[39m,\n", " \u001b[32m91.1\u001b[39m,\n", " \u001b[32m58.9\u001b[39m\n", ")\n", "\u001b[36mtrace1\u001b[39m: \u001b[32mScatter\u001b[39m = \u001b[33mScatter\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m40.0\u001b[39m, \u001b[32m45.7\u001b[39m, \u001b[32m52.0\u001b[39m, \u001b[32m53.6\u001b[39m, \u001b[32m54.1\u001b[39m, \u001b[32m54.2\u001b[39m, \u001b[32m54.5\u001b[39m, \u001b[32m54.7\u001b[39m, \u001b[32m55.1\u001b[39m, \u001b[32m56.6\u001b[39m))\n", " ),\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mStrings\u001b[39m(\n", " \u001b[33mList\u001b[39m(\n", " \u001b[32m\"Switzerland (2011)\"\u001b[39m,\n", " \u001b[32m\"Chile (2013)\"\u001b[39m,\n", " \u001b[32m\"Japan (2014)\"\u001b[39m,\n", " \u001b[32m\"United States (2012)\"\u001b[39m,\n", " \u001b[32m\"Slovenia (2014)\"\u001b[39m,\n", " \u001b[32m\"Canada (2011)\"\u001b[39m,\n", " \u001b[32m\"Poland (2010)\"\u001b[39m,\n", " \u001b[32m\"Estonia (2015)\"\u001b[39m,\n", " \u001b[32m\"Luxembourg (2013)\"\u001b[39m,\n", " \u001b[32m\"Portugal (2011)\"\u001b[39m\n", " )\n", " )\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mScatterMode\u001b[39m(\u001b[33mSet\u001b[39m(Markers))),\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mMarker\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[32m16\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m156\u001b[39m, \u001b[32m165\u001b[39m, \u001b[32m196\u001b[39m, \u001b[32m0.95\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mLine\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m156\u001b[39m, \u001b[32m165\u001b[39m, \u001b[32m196\u001b[39m, \u001b[32m1.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[32m1.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", " ),\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mCircle\u001b[39m(false, false))),\n", " \u001b[32mNone\u001b[39m,\n", "...\n", "\u001b[36mtrace2\u001b[39m: \u001b[32mScatter\u001b[39m = \u001b[33mScatter\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m49.1\u001b[39m, \u001b[32m42.0\u001b[39m, \u001b[32m52.7\u001b[39m, \u001b[32m84.3\u001b[39m, \u001b[32m51.7\u001b[39m, \u001b[32m61.1\u001b[39m, \u001b[32m55.3\u001b[39m, \u001b[32m64.2\u001b[39m, \u001b[32m91.1\u001b[39m, \u001b[32m58.9\u001b[39m))\n", " ),\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mStrings\u001b[39m(\n", " \u001b[33mList\u001b[39m(\n", " \u001b[32m\"Switzerland (2011)\"\u001b[39m,\n", " \u001b[32m\"Chile (2013)\"\u001b[39m,\n", " \u001b[32m\"Japan (2014)\"\u001b[39m,\n", " \u001b[32m\"United States (2012)\"\u001b[39m,\n", " \u001b[32m\"Slovenia (2014)\"\u001b[39m,\n", " \u001b[32m\"Canada (2011)\"\u001b[39m,\n", " \u001b[32m\"Poland (2010)\"\u001b[39m,\n", " \u001b[32m\"Estonia (2015)\"\u001b[39m,\n", " \u001b[32m\"Luxembourg (2013)\"\u001b[39m,\n", " \u001b[32m\"Portugal (2011)\"\u001b[39m\n", " )\n", " )\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mScatterMode\u001b[39m(\u001b[33mSet\u001b[39m(Markers))),\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mMarker\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[32m16\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m0.95\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mLine\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m217\u001b[39m, \u001b[32m217\u001b[39m, \u001b[32m217\u001b[39m, \u001b[32m1.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[32m1.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", " ),\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mCircle\u001b[39m(false, false))),\n", " \u001b[32mNone\u001b[39m,\n", "...\n", "\u001b[36mdata\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mScatter\u001b[39m] = \u001b[33mList\u001b[39m(\n", " \u001b[33mScatter\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m40.0\u001b[39m, \u001b[32m45.7\u001b[39m, \u001b[32m52.0\u001b[39m, \u001b[32m53.6\u001b[39m, \u001b[32m54.1\u001b[39m, \u001b[32m54.2\u001b[39m, \u001b[32m54.5\u001b[39m, \u001b[32m54.7\u001b[39m, \u001b[32m55.1\u001b[39m, \u001b[32m56.6\u001b[39m))\n", " ),\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mStrings\u001b[39m(\n", " \u001b[33mList\u001b[39m(\n", " \u001b[32m\"Switzerland (2011)\"\u001b[39m,\n", " \u001b[32m\"Chile (2013)\"\u001b[39m,\n", " \u001b[32m\"Japan (2014)\"\u001b[39m,\n", " \u001b[32m\"United States (2012)\"\u001b[39m,\n", " \u001b[32m\"Slovenia (2014)\"\u001b[39m,\n", " \u001b[32m\"Canada (2011)\"\u001b[39m,\n", " \u001b[32m\"Poland (2010)\"\u001b[39m,\n", " \u001b[32m\"Estonia (2015)\"\u001b[39m,\n", " \u001b[32m\"Luxembourg (2013)\"\u001b[39m,\n", " \u001b[32m\"Portugal (2011)\"\u001b[39m\n", " )\n", " )\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mScatterMode\u001b[39m(\u001b[33mSet\u001b[39m(Markers))),\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mMarker\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[32m16\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m156\u001b[39m, \u001b[32m165\u001b[39m, \u001b[32m196\u001b[39m, \u001b[32m0.95\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mLine\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m156\u001b[39m, \u001b[32m165\u001b[39m, \u001b[32m196\u001b[39m, \u001b[32m1.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[32m1.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", " ),\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mCircle\u001b[39m(false, false))),\n", "...\n", "\u001b[36mlayout\u001b[39m: \u001b[32mLayout\u001b[39m = \u001b[33mLayout\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[32m\"Votes cast for ten lowest voting age population in OECD countries\"\u001b[39m),\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mLegend\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mFont\u001b[39m(\u001b[33mSome\u001b[39m(\u001b[32m10\u001b[39m), \u001b[32mNone\u001b[39m, \u001b[32mNone\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(Right),\n", " \u001b[33mSome\u001b[39m(Middle)\n", " )\n", " ),\n", " \u001b[33mSome\u001b[39m(\u001b[32m600\u001b[39m),\n", " \u001b[33mSome\u001b[39m(\u001b[32m400\u001b[39m),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mAxis\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mFont\u001b[39m(\u001b[32mNone\u001b[39m, \u001b[32mNone\u001b[39m, \u001b[33mSome\u001b[39m(\u001b[33mRGB\u001b[39m(\u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m)))),\n", " \u001b[33mSome\u001b[39m(false),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(true),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mRGB\u001b[39m(\u001b[32m102\u001b[39m, \u001b[32m102\u001b[39m, \u001b[32m102\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(false),\n", " \u001b[33mSome\u001b[39m(\u001b[33mRGB\u001b[39m(\u001b[32m102\u001b[39m, \u001b[32m102\u001b[39m, \u001b[32m102\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[32m10.0\u001b[39m),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mFont\u001b[39m(\u001b[32mNone\u001b[39m, \u001b[32mNone\u001b[39m, \u001b[33mSome\u001b[39m(\u001b[33mRGB\u001b[39m(\u001b[32m102\u001b[39m, \u001b[32m102\u001b[39m, \u001b[32m102\u001b[39m)))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", "...\n", "\u001b[36mres3_7\u001b[39m: \u001b[32mString\u001b[39m = \u001b[32m\"plot-1752252713\"\u001b[39m" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val country = Seq(\n", " \"Switzerland (2011)\",\n", " \"Chile (2013)\",\n", " \"Japan (2014)\",\n", " \"United States (2012)\",\n", " \"Slovenia (2014)\",\n", " \"Canada (2011)\",\n", " \"Poland (2010)\",\n", " \"Estonia (2015)\",\n", " \"Luxembourg (2013)\",\n", " \"Portugal (2011)\"\n", ")\n", "\n", "val votingPop = Seq(\n", " 40.0, 45.7, 52.0, 53.6, 54.1, 54.2, 54.5, 54.7, 55.1, 56.6\n", ")\n", "\n", "val regVoters = Seq(\n", " 49.1, 42.0, 52.7, 84.3, 51.7, 61.1, 55.3, 64.2, 91.1, 58.9\n", ")\n", "\n", "val trace1 = Scatter(\n", " votingPop,\n", " country,\n", " mode = ScatterMode(ScatterMode.Markers),\n", " name = \"Percent of estimated voting age population\",\n", " marker = Marker(\n", " color = Color.RGBA(156, 165, 196, 0.95),\n", " line = Line(\n", " color = Color.RGBA(156, 165, 196, 1.0),\n", " width = 1.0\n", " ),\n", " symbol = Symbol.Circle(),\n", " size = 16\n", " )\n", ")\n", "\n", "val trace2 = Scatter(\n", " regVoters,\n", " country,\n", " mode = ScatterMode(ScatterMode.Markers),\n", " name = \"Percent of estimated registered voters\",\n", " marker = Marker(\n", " color = Color.RGBA(204, 204, 204, 0.95),\n", " line = Line(\n", " color = Color.RGBA(217, 217, 217, 1.0),\n", " width = 1.0\n", " ),\n", " symbol = Symbol.Circle(),\n", " size = 16\n", " )\n", ")\n", "\n", "val data = Seq(trace1, trace2)\n", "\n", "val layout = Layout(\n", " title = \"Votes cast for ten lowest voting age population in OECD countries\",\n", " xaxis = Axis(\n", " showgrid = false,\n", " showline = true,\n", " linecolor = Color.RGB(102, 102, 102),\n", " titlefont = Font(\n", " color = Color.RGB(204, 204, 204)\n", " ),\n", " tickfont = Font(\n", " color = Color.RGB(102, 102, 102)\n", " ),\n", " autotick = false,\n", " dtick = 10.0,\n", " ticks = Ticks.Outside,\n", " tickcolor = Color.RGB(102, 102, 102)\n", " ),\n", " margin = Margin(\n", " l = 140,\n", " r = 40,\n", " b = 50,\n", " t = 80\n", " ),\n", " legend = Legend(\n", " font = Font(\n", " size = 10\n", " ),\n", " yanchor = Anchor.Middle,\n", " xanchor = Anchor.Right\n", " ),\n", " width = 600,\n", " height = 400,\n", " paper_bgcolor = Color.RGB(254, 247, 234),\n", " plot_bgcolor = Color.RGB(254, 247, 234),\n", " hovermode = HoverMode.Closest\n", ")\n", "\n", "plot(data, layout)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Bar Charts\n", "## Basic Bar Chart" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "type": "bar", "x": [ "giraffes", "orangutans", "monkeys" ], "y": [ 20, 14, 23 ] } ], "layout": {} }, "text/html": [ "
\n", "\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[36mdata\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mBar\u001b[39m] = \u001b[33mList\u001b[39m(\n", " \u001b[33mBar\u001b[39m(\n", " \u001b[33mStrings\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m\"giraffes\"\u001b[39m, \u001b[32m\"orangutans\"\u001b[39m, \u001b[32m\"monkeys\"\u001b[39m)),\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m20.0\u001b[39m, \u001b[32m14.0\u001b[39m, \u001b[32m23.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", ")\n", "\u001b[36mres4_1\u001b[39m: \u001b[32mString\u001b[39m = \u001b[32m\"plot-660078694\"\u001b[39m" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val data = Seq(\n", " Bar(\n", " Seq(\"giraffes\", \"orangutans\", \"monkeys\"),\n", " Seq(20, 14, 23)\n", " )\n", ")\n", "\n", "plot(data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Grouped Bar Chart" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "name": "SF Zoo", "type": "bar", "x": [ "giraffes", "orangutans", "monkeys" ], "y": [ 20, 14, 23 ] }, { "name": "LA Zoo", "type": "bar", "x": [ "giraffes", "orangutans", "monkeys" ], "y": [ 12, 18, 29 ] } ], "layout": { "barmode": "group" } }, "text/html": [ "
\n", "\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[36mtrace1\u001b[39m: \u001b[32mBar\u001b[39m = \u001b[33mBar\u001b[39m(\n", " \u001b[33mStrings\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m\"giraffes\"\u001b[39m, \u001b[32m\"orangutans\"\u001b[39m, \u001b[32m\"monkeys\"\u001b[39m)),\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m20.0\u001b[39m, \u001b[32m14.0\u001b[39m, \u001b[32m23.0\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[32m\"SF Zoo\"\u001b[39m),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", ")\n", "\u001b[36mtrace2\u001b[39m: \u001b[32mBar\u001b[39m = \u001b[33mBar\u001b[39m(\n", " \u001b[33mStrings\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m\"giraffes\"\u001b[39m, \u001b[32m\"orangutans\"\u001b[39m, \u001b[32m\"monkeys\"\u001b[39m)),\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m12.0\u001b[39m, \u001b[32m18.0\u001b[39m, \u001b[32m29.0\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[32m\"LA Zoo\"\u001b[39m),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", ")\n", "\u001b[36mdata\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mBar\u001b[39m] = \u001b[33mList\u001b[39m(\n", " \u001b[33mBar\u001b[39m(\n", " \u001b[33mStrings\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m\"giraffes\"\u001b[39m, \u001b[32m\"orangutans\"\u001b[39m, \u001b[32m\"monkeys\"\u001b[39m)),\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m20.0\u001b[39m, \u001b[32m14.0\u001b[39m, \u001b[32m23.0\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[32m\"SF Zoo\"\u001b[39m),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " ),\n", " \u001b[33mBar\u001b[39m(\n", " \u001b[33mStrings\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m\"giraffes\"\u001b[39m, \u001b[32m\"orangutans\"\u001b[39m, \u001b[32m\"monkeys\"\u001b[39m)),\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m12.0\u001b[39m, \u001b[32m18.0\u001b[39m, \u001b[32m29.0\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[32m\"LA Zoo\"\u001b[39m),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", ")\n", "\u001b[36mlayout\u001b[39m: \u001b[32mLayout\u001b[39m = \u001b[33mLayout\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(Group),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", ")\n", "\u001b[36mres5_4\u001b[39m: \u001b[32mString\u001b[39m = \u001b[32m\"plot-1178349964\"\u001b[39m" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val trace1 = Bar(\n", " Seq(\"giraffes\", \"orangutans\", \"monkeys\"),\n", " Seq(20, 14, 23),\n", " name = \"SF Zoo\"\n", ")\n", "\n", "val trace2 = Bar(\n", " Seq(\"giraffes\", \"orangutans\", \"monkeys\"),\n", " Seq(12, 18, 29),\n", " name = \"LA Zoo\"\n", ")\n", "\n", "val data = Seq(trace1, trace2)\n", "\n", "val layout = Layout( \n", " barmode = BarMode.Group\n", ")\n", "\n", "plot(data, layout)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bar Chart with Direct Labels" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "marker": { "color": "rgb(158, 202, 225)", "line": { "color": "rgb(8, 48, 107)", "width": 1.5 }, "opacity": 0.6 }, "text": [ "27% market share", "24% market share", "19% market share" ], "type": "bar", "x": [ "Product A", "Product B", "Product C" ], "y": [ 20, 14, 23 ] } ], "layout": { "annotations": [ { "showarrow": false, "text": "20", "x": "Product A", "xanchor": "center", "y": 20, "yanchor": "bottom" }, { "showarrow": false, "text": "14", "x": "Product B", "xanchor": "center", "y": 14, "yanchor": "bottom" }, { "showarrow": false, "text": "23", "x": "Product C", "xanchor": "center", "y": 23, "yanchor": "bottom" } ], "title": "January 2013 Sales Report" } }, "text/html": [ "
\n", "\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[36mxValue\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mString\u001b[39m] = \u001b[33mList\u001b[39m(\u001b[32m\"Product A\"\u001b[39m, \u001b[32m\"Product B\"\u001b[39m, \u001b[32m\"Product C\"\u001b[39m)\n", "\u001b[36myValue\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mInt\u001b[39m] = \u001b[33mList\u001b[39m(\u001b[32m20\u001b[39m, \u001b[32m14\u001b[39m, \u001b[32m23\u001b[39m)\n", "\u001b[36mtrace1\u001b[39m: \u001b[32mBar\u001b[39m = \u001b[33mBar\u001b[39m(\n", " \u001b[33mStrings\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m\"Product A\"\u001b[39m, \u001b[32m\"Product B\"\u001b[39m, \u001b[32m\"Product C\"\u001b[39m)),\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m20.0\u001b[39m, \u001b[32m14.0\u001b[39m, \u001b[32m23.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m\"27% market share\"\u001b[39m, \u001b[32m\"24% market share\"\u001b[39m, \u001b[32m\"19% market share\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mMarker\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGB\u001b[39m(\u001b[32m158\u001b[39m, \u001b[32m202\u001b[39m, \u001b[32m225\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[32m0.6\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mLine\u001b[39m(\u001b[32mNone\u001b[39m, \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGB\u001b[39m(\u001b[32m8\u001b[39m, \u001b[32m48\u001b[39m, \u001b[32m107\u001b[39m))), \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[32m1.5\u001b[39m)), \u001b[32mNone\u001b[39m, \u001b[32mNone\u001b[39m, \u001b[32mNone\u001b[39m)\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", ")\n", "\u001b[36mdata\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mBar\u001b[39m] = \u001b[33mList\u001b[39m(\n", " \u001b[33mBar\u001b[39m(\n", " \u001b[33mStrings\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m\"Product A\"\u001b[39m, \u001b[32m\"Product B\"\u001b[39m, \u001b[32m\"Product C\"\u001b[39m)),\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m20.0\u001b[39m, \u001b[32m14.0\u001b[39m, \u001b[32m23.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m\"27% market share\"\u001b[39m, \u001b[32m\"24% market share\"\u001b[39m, \u001b[32m\"19% market share\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mMarker\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGB\u001b[39m(\u001b[32m158\u001b[39m, \u001b[32m202\u001b[39m, \u001b[32m225\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[32m0.6\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mLine\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGB\u001b[39m(\u001b[32m8\u001b[39m, \u001b[32m48\u001b[39m, \u001b[32m107\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[32m1.5\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", ")\n", "\u001b[36mannotations\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mAnnotation\u001b[39m] = \u001b[33mList\u001b[39m(\n", " \u001b[33mAnnotation\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mStringElement\u001b[39m(\u001b[32m\"Product A\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubleElement\u001b[39m(\u001b[32m20.0\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(Center),\n", " \u001b[33mSome\u001b[39m(Bottom),\n", " \u001b[33mSome\u001b[39m(\u001b[33mStringElement\u001b[39m(\u001b[32m\"20\"\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(false)\n", " ),\n", " \u001b[33mAnnotation\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mStringElement\u001b[39m(\u001b[32m\"Product B\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubleElement\u001b[39m(\u001b[32m14.0\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(Center),\n", " \u001b[33mSome\u001b[39m(Bottom),\n", " \u001b[33mSome\u001b[39m(\u001b[33mStringElement\u001b[39m(\u001b[32m\"14\"\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(false)\n", " ),\n", " \u001b[33mAnnotation\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mStringElement\u001b[39m(\u001b[32m\"Product C\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubleElement\u001b[39m(\u001b[32m23.0\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(Center),\n", " \u001b[33mSome\u001b[39m(Bottom),\n", " \u001b[33mSome\u001b[39m(\u001b[33mStringElement\u001b[39m(\u001b[32m\"23\"\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(false)\n", " )\n", ")\n", "\u001b[36mlayout\u001b[39m: \u001b[32mLayout\u001b[39m = \u001b[33mLayout\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[32m\"January 2013 Sales Report\"\u001b[39m),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mList\u001b[39m(\n", " \u001b[33mAnnotation\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mStringElement\u001b[39m(\u001b[32m\"Product A\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubleElement\u001b[39m(\u001b[32m20.0\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(Center),\n", " \u001b[33mSome\u001b[39m(Bottom),\n", " \u001b[33mSome\u001b[39m(\u001b[33mStringElement\u001b[39m(\u001b[32m\"20\"\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(false)\n", " ),\n", " \u001b[33mAnnotation\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mStringElement\u001b[39m(\u001b[32m\"Product B\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubleElement\u001b[39m(\u001b[32m14.0\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(Center),\n", " \u001b[33mSome\u001b[39m(Bottom),\n", "...\n", "\u001b[36mres6_6\u001b[39m: \u001b[32mString\u001b[39m = \u001b[32m\"plot-626918300\"\u001b[39m" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val xValue = Seq(\"Product A\", \"Product B\", \"Product C\")\n", "\n", "val yValue = Seq(20, 14, 23)\n", "\n", "val trace1 = Bar(\n", " xValue,\n", " yValue,\n", " text = Seq(\"27% market share\", \"24% market share\", \"19% market share\"),\n", " marker = Marker(\n", " color = Color.RGB(158, 202, 225),\n", " opacity = 0.6,\n", " line = Line(\n", " color = Color.RGB(8, 48, 107),\n", " width = 1.5\n", " )\n", " )\n", ")\n", "\n", "val data = Seq(trace1)\n", "\n", "val annotations = xValue.zip(yValue).map {\n", " case (x, y) =>\n", " Annotation(\n", " x = x,\n", " y = y,\n", " text = y.toString,\n", " xanchor = Anchor.Center,\n", " yanchor = Anchor.Bottom,\n", " showarrow = false\n", " )\n", "}\n", "\n", "val layout = Layout(\n", " title = \"January 2013 Sales Report\",\n", " annotations = annotations\n", ")\n", "\n", "plot(data, layout)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Customizing Individual Bar Colors" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "marker": { "color": [ "rgba(204, 204, 204, 1.0)", "rgba(222, 45, 38, 0.8)", "rgba(204, 204, 204, 1.0)", "rgba(204, 204, 204, 1.0)", "rgba(204, 204, 204, 1.0)" ] }, "type": "bar", "x": [ "Feature A", "Feature B", "Feature C", "Feature D", "Feature E" ], "y": [ 20, 14, 23, 25, 22 ] } ], "layout": { "title": "Least Used Feature" } }, "text/html": [ "
\n", "\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[36mdefaultColor\u001b[39m: \u001b[32mColor\u001b[39m.\u001b[32mRGBA\u001b[39m = \u001b[33mRGBA\u001b[39m(\u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m1.0\u001b[39m)\n", "\u001b[36mhighlightColor\u001b[39m: \u001b[32mColor\u001b[39m.\u001b[32mRGBA\u001b[39m = \u001b[33mRGBA\u001b[39m(\u001b[32m222\u001b[39m, \u001b[32m45\u001b[39m, \u001b[32m38\u001b[39m, \u001b[32m0.8\u001b[39m)\n", "\u001b[36mtrace1\u001b[39m: \u001b[32mBar\u001b[39m = \u001b[33mBar\u001b[39m(\n", " \u001b[33mStrings\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m\"Feature A\"\u001b[39m, \u001b[32m\"Feature B\"\u001b[39m, \u001b[32m\"Feature C\"\u001b[39m, \u001b[32m\"Feature D\"\u001b[39m, \u001b[32m\"Feature E\"\u001b[39m)),\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m20.0\u001b[39m, \u001b[32m14.0\u001b[39m, \u001b[32m23.0\u001b[39m, \u001b[32m25.0\u001b[39m, \u001b[32m22.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mMarker\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mSequence\u001b[39m(\n", " \u001b[33mList\u001b[39m(\n", " \u001b[33mRGBA\u001b[39m(\u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m1.0\u001b[39m),\n", " \u001b[33mRGBA\u001b[39m(\u001b[32m222\u001b[39m, \u001b[32m45\u001b[39m, \u001b[32m38\u001b[39m, \u001b[32m0.8\u001b[39m),\n", " \u001b[33mRGBA\u001b[39m(\u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m1.0\u001b[39m),\n", " \u001b[33mRGBA\u001b[39m(\u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m1.0\u001b[39m),\n", " \u001b[33mRGBA\u001b[39m(\u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m1.0\u001b[39m)\n", " )\n", " )\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", ")\n", "\u001b[36mdata\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mBar\u001b[39m] = \u001b[33mList\u001b[39m(\n", " \u001b[33mBar\u001b[39m(\n", " \u001b[33mStrings\u001b[39m(\n", " \u001b[33mList\u001b[39m(\u001b[32m\"Feature A\"\u001b[39m, \u001b[32m\"Feature B\"\u001b[39m, \u001b[32m\"Feature C\"\u001b[39m, \u001b[32m\"Feature D\"\u001b[39m, \u001b[32m\"Feature E\"\u001b[39m)\n", " ),\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m20.0\u001b[39m, \u001b[32m14.0\u001b[39m, \u001b[32m23.0\u001b[39m, \u001b[32m25.0\u001b[39m, \u001b[32m22.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mMarker\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mSequence\u001b[39m(\n", " \u001b[33mList\u001b[39m(\n", " \u001b[33mRGBA\u001b[39m(\u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m1.0\u001b[39m),\n", " \u001b[33mRGBA\u001b[39m(\u001b[32m222\u001b[39m, \u001b[32m45\u001b[39m, \u001b[32m38\u001b[39m, \u001b[32m0.8\u001b[39m),\n", " \u001b[33mRGBA\u001b[39m(\u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m1.0\u001b[39m),\n", " \u001b[33mRGBA\u001b[39m(\u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m1.0\u001b[39m),\n", " \u001b[33mRGBA\u001b[39m(\u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m204\u001b[39m, \u001b[32m1.0\u001b[39m)\n", " )\n", " )\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", "...\n", "\u001b[36mlayout\u001b[39m: \u001b[32mLayout\u001b[39m = \u001b[33mLayout\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[32m\"Least Used Feature\"\u001b[39m),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", ")\n", "\u001b[36mres7_5\u001b[39m: \u001b[32mString\u001b[39m = \u001b[32m\"plot-1356760145\"\u001b[39m" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val defaultColor = Color.RGBA(204,204,204,1)\n", "val highlightColor = Color.RGBA(222,45,38,0.8)\n", "\n", "val trace1 = Bar(\n", " Seq(\"Feature A\", \"Feature B\", \"Feature C\", \"Feature D\", \"Feature E\"),\n", " Seq(20, 14, 23, 25, 22),\n", " marker = Marker(\n", " color = Seq(\n", " defaultColor, highlightColor, defaultColor, defaultColor, defaultColor\n", " )\n", " )\n", ")\n", "\n", "val data = Seq(trace1)\n", "\n", "val layout = Layout(\n", " title = \"Least Used Feature\"\n", ")\n", "\n", "plot(data, layout)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Waterfall Bar Chart" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "marker": { "color": "rgba(1, 1, 1, 0.0)" }, "type": "bar", "x": [ "Product Revenue", "Services Revenue", "Total Revenue", "Fixed Costs", "Variable Costs", "Total Costs", "Total" ], "y": [ 0, 430, 0, 570, 370, 370, 0 ] }, { "marker": { "color": "rgba(55, 128, 191, 0.7)", "line": { "color": "rgba(55, 128, 191, 1.0)", "width": 2 } }, "type": "bar", "x": [ "Product Revenue", "Services Revenue", "Total Revenue", "Fixed Costs", "Variable Costs", "Total Costs", "Total" ], "y": [ 430, 260, 690, 0, 0, 0, 0 ] }, { "marker": { "color": "rgba(219, 64, 82, 0.7)", "line": { "color": "rgba(219, 64, 82, 1.0)", "width": 2 } }, "type": "bar", "x": [ "Product Revenue", "Services Revenue", "Total Revenue", "Fixed Costs", "Variable Costs", "Total Costs", "Total" ], "y": [ 0, 0, 0, 120, 200, 320, 0 ] }, { "marker": { "color": "rgba(50, 171, 96, 0.7)", "line": { "color": "rgba(50, 171, 96, 1.0)", "width": 2 } }, "type": "bar", "x": [ "Product Revenue", "Services Revenue", "Total Revenue", "Fixed Costs", "Variable Costs", "Total Costs", "Total" ], "y": [ 0, 0, 0, 0, 0, 0, 370 ] } ], "layout": { "annotations": [ { "font": { "color": "rgba(245, 246, 249, 1.0)", "family": "Arial", "size": 14 }, "showarrow": false, "text": "$430K", "x": "Product Revenue", "y": 400 }, { "font": { "color": "rgba(245, 246, 249, 1.0)", "family": "Arial", "size": 14 }, "showarrow": false, "text": "$260K", "x": "Services Revenue", "y": 660 }, { "font": { "color": "rgba(245, 246, 249, 1.0)", "family": "Arial", "size": 14 }, "showarrow": false, "text": "$690K", "x": "Total Revenue", "y": 660 }, { "font": { "color": "rgba(245, 246, 249, 1.0)", "family": "Arial", "size": 14 }, "showarrow": false, "text": "$-120K", "x": "Fixed Costs", "y": 590 }, { "font": { "color": "rgba(245, 246, 249, 1.0)", "family": "Arial", "size": 14 }, "showarrow": false, "text": "$-200K", "x": "Variable Costs", "y": 400 }, { "font": { "color": "rgba(245, 246, 249, 1.0)", "family": "Arial", "size": 14 }, "showarrow": false, "text": "$-320K", "x": "Total Costs", "y": 400 }, { "font": { "color": "rgba(245, 246, 249, 1.0)", "family": "Arial", "size": 14 }, "showarrow": false, "text": "$370K", "x": "Total", "y": 340 } ], "barmode": "stack", "height": 400, "paper_bgcolor": "rgba(245, 246, 249, 1.0)", "plot_bgcolor": "rgba(245, 246, 249, 1.0)", "showlegend": false, "title": "Annual Profit 2015", "width": 600 } }, "text/html": [ "
\n", "\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[36mxData\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mString\u001b[39m] = \u001b[33mList\u001b[39m(\n", " \u001b[32m\"Product Revenue\"\u001b[39m,\n", " \u001b[32m\"Services Revenue\"\u001b[39m,\n", " \u001b[32m\"Total Revenue\"\u001b[39m,\n", " \u001b[32m\"Fixed Costs\"\u001b[39m,\n", " \u001b[32m\"Variable Costs\"\u001b[39m,\n", " \u001b[32m\"Total Costs\"\u001b[39m,\n", " \u001b[32m\"Total\"\u001b[39m\n", ")\n", "\u001b[36myData\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mInt\u001b[39m] = \u001b[33mList\u001b[39m(\u001b[32m400\u001b[39m, \u001b[32m660\u001b[39m, \u001b[32m660\u001b[39m, \u001b[32m590\u001b[39m, \u001b[32m400\u001b[39m, \u001b[32m400\u001b[39m, \u001b[32m340\u001b[39m)\n", "\u001b[36mtextList\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mString\u001b[39m] = \u001b[33mList\u001b[39m(\n", " \u001b[32m\"$430K\"\u001b[39m,\n", " \u001b[32m\"$260K\"\u001b[39m,\n", " \u001b[32m\"$690K\"\u001b[39m,\n", " \u001b[32m\"$-120K\"\u001b[39m,\n", " \u001b[32m\"$-200K\"\u001b[39m,\n", " \u001b[32m\"$-320K\"\u001b[39m,\n", " \u001b[32m\"$370K\"\u001b[39m\n", ")\n", "\u001b[36mtrace1\u001b[39m: \u001b[32mBar\u001b[39m = \u001b[33mBar\u001b[39m(\n", " \u001b[33mStrings\u001b[39m(\n", " \u001b[33mList\u001b[39m(\n", " \u001b[32m\"Product Revenue\"\u001b[39m,\n", " \u001b[32m\"Services Revenue\"\u001b[39m,\n", " \u001b[32m\"Total Revenue\"\u001b[39m,\n", " \u001b[32m\"Fixed Costs\"\u001b[39m,\n", " \u001b[32m\"Variable Costs\"\u001b[39m,\n", " \u001b[32m\"Total Costs\"\u001b[39m,\n", " \u001b[32m\"Total\"\u001b[39m\n", " )\n", " ),\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m0.0\u001b[39m, \u001b[32m430.0\u001b[39m, \u001b[32m0.0\u001b[39m, \u001b[32m570.0\u001b[39m, \u001b[32m370.0\u001b[39m, \u001b[32m370.0\u001b[39m, \u001b[32m0.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mMarker\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m1\u001b[39m, \u001b[32m1\u001b[39m, \u001b[32m1\u001b[39m, \u001b[32m0.0\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", ")\n", "\u001b[36mtrace2\u001b[39m: \u001b[32mBar\u001b[39m = \u001b[33mBar\u001b[39m(\n", " \u001b[33mStrings\u001b[39m(\n", " \u001b[33mList\u001b[39m(\n", " \u001b[32m\"Product Revenue\"\u001b[39m,\n", " \u001b[32m\"Services Revenue\"\u001b[39m,\n", " \u001b[32m\"Total Revenue\"\u001b[39m,\n", " \u001b[32m\"Fixed Costs\"\u001b[39m,\n", " \u001b[32m\"Variable Costs\"\u001b[39m,\n", " \u001b[32m\"Total Costs\"\u001b[39m,\n", " \u001b[32m\"Total\"\u001b[39m\n", " )\n", " ),\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m430.0\u001b[39m, \u001b[32m260.0\u001b[39m, \u001b[32m690.0\u001b[39m, \u001b[32m0.0\u001b[39m, \u001b[32m0.0\u001b[39m, \u001b[32m0.0\u001b[39m, \u001b[32m0.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mMarker\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m55\u001b[39m, \u001b[32m128\u001b[39m, \u001b[32m191\u001b[39m, \u001b[32m0.7\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mLine\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m55\u001b[39m, \u001b[32m128\u001b[39m, \u001b[32m191\u001b[39m, \u001b[32m1.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[32m2.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", "...\n", "\u001b[36mtrace3\u001b[39m: \u001b[32mBar\u001b[39m = \u001b[33mBar\u001b[39m(\n", " \u001b[33mStrings\u001b[39m(\n", " \u001b[33mList\u001b[39m(\n", " \u001b[32m\"Product Revenue\"\u001b[39m,\n", " \u001b[32m\"Services Revenue\"\u001b[39m,\n", " \u001b[32m\"Total Revenue\"\u001b[39m,\n", " \u001b[32m\"Fixed Costs\"\u001b[39m,\n", " \u001b[32m\"Variable Costs\"\u001b[39m,\n", " \u001b[32m\"Total Costs\"\u001b[39m,\n", " \u001b[32m\"Total\"\u001b[39m\n", " )\n", " ),\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m0.0\u001b[39m, \u001b[32m0.0\u001b[39m, \u001b[32m0.0\u001b[39m, \u001b[32m120.0\u001b[39m, \u001b[32m200.0\u001b[39m, \u001b[32m320.0\u001b[39m, \u001b[32m0.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mMarker\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m219\u001b[39m, \u001b[32m64\u001b[39m, \u001b[32m82\u001b[39m, \u001b[32m0.7\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mLine\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m219\u001b[39m, \u001b[32m64\u001b[39m, \u001b[32m82\u001b[39m, \u001b[32m1.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[32m2.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", "...\n", "\u001b[36mtrace4\u001b[39m: \u001b[32mBar\u001b[39m = \u001b[33mBar\u001b[39m(\n", " \u001b[33mStrings\u001b[39m(\n", " \u001b[33mList\u001b[39m(\n", " \u001b[32m\"Product Revenue\"\u001b[39m,\n", " \u001b[32m\"Services Revenue\"\u001b[39m,\n", " \u001b[32m\"Total Revenue\"\u001b[39m,\n", " \u001b[32m\"Fixed Costs\"\u001b[39m,\n", " \u001b[32m\"Variable Costs\"\u001b[39m,\n", " \u001b[32m\"Total Costs\"\u001b[39m,\n", " \u001b[32m\"Total\"\u001b[39m\n", " )\n", " ),\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m0.0\u001b[39m, \u001b[32m0.0\u001b[39m, \u001b[32m0.0\u001b[39m, \u001b[32m0.0\u001b[39m, \u001b[32m0.0\u001b[39m, \u001b[32m0.0\u001b[39m, \u001b[32m370.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mMarker\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m50\u001b[39m, \u001b[32m171\u001b[39m, \u001b[32m96\u001b[39m, \u001b[32m0.7\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mLine\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m50\u001b[39m, \u001b[32m171\u001b[39m, \u001b[32m96\u001b[39m, \u001b[32m1.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[32m2.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", "...\n", "\u001b[36mdata\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mBar\u001b[39m] = \u001b[33mList\u001b[39m(\n", " \u001b[33mBar\u001b[39m(\n", " \u001b[33mStrings\u001b[39m(\n", " \u001b[33mList\u001b[39m(\n", " \u001b[32m\"Product Revenue\"\u001b[39m,\n", " \u001b[32m\"Services Revenue\"\u001b[39m,\n", " \u001b[32m\"Total Revenue\"\u001b[39m,\n", " \u001b[32m\"Fixed Costs\"\u001b[39m,\n", " \u001b[32m\"Variable Costs\"\u001b[39m,\n", " \u001b[32m\"Total Costs\"\u001b[39m,\n", " \u001b[32m\"Total\"\u001b[39m\n", " )\n", " ),\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m0.0\u001b[39m, \u001b[32m430.0\u001b[39m, \u001b[32m0.0\u001b[39m, \u001b[32m570.0\u001b[39m, \u001b[32m370.0\u001b[39m, \u001b[32m370.0\u001b[39m, \u001b[32m0.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mMarker\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m1\u001b[39m, \u001b[32m1\u001b[39m, \u001b[32m1\u001b[39m, \u001b[32m0.0\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", "...\n", "\u001b[36mannotations\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mAnnotation\u001b[39m] = \u001b[33mList\u001b[39m(\n", " \u001b[33mAnnotation\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mStringElement\u001b[39m(\u001b[32m\"Product Revenue\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubleElement\u001b[39m(\u001b[32m400.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mStringElement\u001b[39m(\u001b[32m\"$430K\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[33mFont\u001b[39m(\u001b[33mSome\u001b[39m(\u001b[32m14\u001b[39m), \u001b[33mSome\u001b[39m(\u001b[32m\"Arial\"\u001b[39m), \u001b[33mSome\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m245\u001b[39m, \u001b[32m246\u001b[39m, \u001b[32m249\u001b[39m, \u001b[32m1.0\u001b[39m)))),\n", " \u001b[33mSome\u001b[39m(false)\n", " ),\n", " \u001b[33mAnnotation\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mStringElement\u001b[39m(\u001b[32m\"Services Revenue\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubleElement\u001b[39m(\u001b[32m660.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mStringElement\u001b[39m(\u001b[32m\"$260K\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[33mFont\u001b[39m(\u001b[33mSome\u001b[39m(\u001b[32m14\u001b[39m), \u001b[33mSome\u001b[39m(\u001b[32m\"Arial\"\u001b[39m), \u001b[33mSome\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m245\u001b[39m, \u001b[32m246\u001b[39m, \u001b[32m249\u001b[39m, \u001b[32m1.0\u001b[39m)))),\n", " \u001b[33mSome\u001b[39m(false)\n", " ),\n", " \u001b[33mAnnotation\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mStringElement\u001b[39m(\u001b[32m\"Total Revenue\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubleElement\u001b[39m(\u001b[32m660.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mStringElement\u001b[39m(\u001b[32m\"$690K\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[33mFont\u001b[39m(\u001b[33mSome\u001b[39m(\u001b[32m14\u001b[39m), \u001b[33mSome\u001b[39m(\u001b[32m\"Arial\"\u001b[39m), \u001b[33mSome\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m245\u001b[39m, \u001b[32m246\u001b[39m, \u001b[32m249\u001b[39m, \u001b[32m1.0\u001b[39m)))),\n", " \u001b[33mSome\u001b[39m(false)\n", " ),\n", " \u001b[33mAnnotation\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mStringElement\u001b[39m(\u001b[32m\"Fixed Costs\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubleElement\u001b[39m(\u001b[32m590.0\u001b[39m)),\n", "...\n", "\u001b[36mlayout\u001b[39m: \u001b[32mLayout\u001b[39m = \u001b[33mLayout\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[32m\"Annual Profit 2015\"\u001b[39m),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[32m600\u001b[39m),\n", " \u001b[33mSome\u001b[39m(\u001b[32m400\u001b[39m),\n", " \u001b[33mSome\u001b[39m(false),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(Stack),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mList\u001b[39m(\n", " \u001b[33mAnnotation\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mStringElement\u001b[39m(\u001b[32m\"Product Revenue\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubleElement\u001b[39m(\u001b[32m400.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mStringElement\u001b[39m(\u001b[32m\"$430K\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[33mFont\u001b[39m(\u001b[33mSome\u001b[39m(\u001b[32m14\u001b[39m), \u001b[33mSome\u001b[39m(\u001b[32m\"Arial\"\u001b[39m), \u001b[33mSome\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m245\u001b[39m, \u001b[32m246\u001b[39m, \u001b[32m249\u001b[39m, \u001b[32m1.0\u001b[39m)))),\n", " \u001b[33mSome\u001b[39m(false)\n", " ),\n", " \u001b[33mAnnotation\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mStringElement\u001b[39m(\u001b[32m\"Services Revenue\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubleElement\u001b[39m(\u001b[32m660.0\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", "...\n", "\u001b[36mres8_10\u001b[39m: \u001b[32mString\u001b[39m = \u001b[32m\"plot-687002119\"\u001b[39m" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val xData = Seq(\n", " \"Product Revenue\",\n", " \"Services Revenue\",\n", " \"Total Revenue\",\n", " \"Fixed Costs\",\n", " \"Variable Costs\",\n", " \"Total Costs\",\n", " \"Total\"\n", ")\n", "\n", "val yData = Seq(400, 660, 660, 590, 400, 400, 340)\n", "\n", "val textList = Seq(\"$430K\", \"$260K\", \"$690K\", \"$-120K\", \"$-200K\", \"$-320K\", \"$370K\")\n", "\n", "//Base\n", "\n", "val trace1 = Bar(\n", " x = xData,\n", " y = Seq(0, 430, 0, 570, 370, 370, 0),\n", " marker = Marker(\n", " color = Color.RGBA(1, 1, 1, 0.0)\n", " )\n", ")\n", "\n", "//Revenue\n", "\n", "val trace2 = Bar(\n", " xData,\n", " Seq(430, 260, 690, 0, 0, 0, 0),\n", " marker = Marker(\n", " color = Color.RGBA(55, 128, 191, 0.7),\n", " line = Line(\n", " color = Color.RGBA(55, 128, 191, 1.0),\n", " width = 2.0\n", " )\n", " )\n", ")\n", "\n", "//Cost\n", "\n", "val trace3 = Bar(\n", " xData,\n", " Seq(0, 0, 0, 120, 200, 320, 0),\n", " marker = Marker(\n", " color = Color.RGBA(219, 64, 82, 0.7),\n", " line = Line(\n", " color = Color.RGBA(219, 64, 82, 1.0),\n", " width = 2.0\n", " )\n", " )\n", ")\n", "\n", "//Profit\n", "\n", "val trace4 = Bar(\n", " xData,\n", " Seq(0, 0, 0, 0, 0, 0, 370),\n", " marker = Marker(\n", " color = Color.RGBA(50,171, 96, 0.7),\n", " line = Line(\n", " color = Color.RGBA(50, 171, 96, 1.0),\n", " width = 2.0\n", " )\n", " )\n", ")\n", "\n", "val data = Seq(trace1, trace2, trace3, trace4)\n", "\n", "val annotations = xData.zip(yData).zip(textList).map {\n", " case ((x, y), text) =>\n", " Annotation(\n", " x = x,\n", " y = y,\n", " text = text,\n", " font = Font(\n", " family = \"Arial\",\n", " size = 14,\n", " color = Color.RGBA(245, 246, 249, 1)\n", " ),\n", " showarrow = false\n", " )\n", "}\n", "\n", "val layout = Layout(\n", " title = \"Annual Profit 2015\",\n", " barmode = BarMode.Stack,\n", " paper_bgcolor = Color.RGBA(245, 246, 249, 1),\n", " plot_bgcolor = Color.RGBA(245, 246, 249, 1),\n", " width = 600,\n", " height = 400,\n", " showlegend = false,\n", " annotations = annotations\n", ")\n", "\n", "plot(data, layout)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Horizontal Bar Charts\n", "## Basic Horizontal Bar Chart" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "orientation": "h", "type": "bar", "x": [ 20, 14, 23 ], "y": [ "giraffes", "orangutans", "monkeys" ] } ], "layout": {} }, "text/html": [ "
\n", "\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[36mdata\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mBar\u001b[39m] = \u001b[33mList\u001b[39m(\n", " \u001b[33mBar\u001b[39m(\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m20.0\u001b[39m, \u001b[32m14.0\u001b[39m, \u001b[32m23.0\u001b[39m)),\n", " \u001b[33mStrings\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m\"giraffes\"\u001b[39m, \u001b[32m\"orangutans\"\u001b[39m, \u001b[32m\"monkeys\"\u001b[39m)),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(Horizontal),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", ")\n", "\u001b[36mres9_1\u001b[39m: \u001b[32mString\u001b[39m = \u001b[32m\"plot-485959778\"\u001b[39m" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val data = Seq(Bar(\n", " Seq(20, 14, 23),\n", " Seq(\"giraffes\", \"orangutans\", \"monkeys\"),\n", " orientation = Orientation.Horizontal\n", "))\n", "\n", "plot(data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Colored Bar Chart" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "marker": { "color": "rgba(55, 128, 191, 0.6)", "width": 1 }, "name": "SF Zoo", "orientation": "h", "type": "bar", "x": [ 20, 14, 23 ], "y": [ "giraffes", "orangutans", "monkeys" ] }, { "marker": { "color": "rgba(255, 153, 51, 0.6)", "width": 1 }, "name": "LA Zoo", "orientation": "h", "type": "bar", "x": [ 12, 18, 29 ], "y": [ "giraffes", "orangutans", "monkeys" ] } ], "layout": { "barmode": "stack", "title": "Colored Bar Chart" } }, "text/html": [ "
\n", "\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[36mtrace1\u001b[39m: \u001b[32mBar\u001b[39m = \u001b[33mBar\u001b[39m(\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m20.0\u001b[39m, \u001b[32m14.0\u001b[39m, \u001b[32m23.0\u001b[39m)),\n", " \u001b[33mStrings\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m\"giraffes\"\u001b[39m, \u001b[32m\"orangutans\"\u001b[39m, \u001b[32m\"monkeys\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[32m\"SF Zoo\"\u001b[39m),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mMarker\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m55\u001b[39m, \u001b[32m128\u001b[39m, \u001b[32m191\u001b[39m, \u001b[32m0.6\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[32m1\u001b[39m))\n", " )\n", " ),\n", " \u001b[33mSome\u001b[39m(Horizontal),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", ")\n", "\u001b[36mtrace2\u001b[39m: \u001b[32mBar\u001b[39m = \u001b[33mBar\u001b[39m(\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m12.0\u001b[39m, \u001b[32m18.0\u001b[39m, \u001b[32m29.0\u001b[39m)),\n", " \u001b[33mStrings\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m\"giraffes\"\u001b[39m, \u001b[32m\"orangutans\"\u001b[39m, \u001b[32m\"monkeys\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[32m\"LA Zoo\"\u001b[39m),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mMarker\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m255\u001b[39m, \u001b[32m153\u001b[39m, \u001b[32m51\u001b[39m, \u001b[32m0.6\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[32m1\u001b[39m))\n", " )\n", " ),\n", " \u001b[33mSome\u001b[39m(Horizontal),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", ")\n", "\u001b[36mdata\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mBar\u001b[39m] = \u001b[33mList\u001b[39m(\n", " \u001b[33mBar\u001b[39m(\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m20.0\u001b[39m, \u001b[32m14.0\u001b[39m, \u001b[32m23.0\u001b[39m)),\n", " \u001b[33mStrings\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m\"giraffes\"\u001b[39m, \u001b[32m\"orangutans\"\u001b[39m, \u001b[32m\"monkeys\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[32m\"SF Zoo\"\u001b[39m),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mMarker\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m55\u001b[39m, \u001b[32m128\u001b[39m, \u001b[32m191\u001b[39m, \u001b[32m0.6\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[32m1\u001b[39m))\n", " )\n", " ),\n", " \u001b[33mSome\u001b[39m(Horizontal),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " ),\n", " \u001b[33mBar\u001b[39m(\n", " \u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m12.0\u001b[39m, \u001b[32m18.0\u001b[39m, \u001b[32m29.0\u001b[39m)),\n", " \u001b[33mStrings\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m\"giraffes\"\u001b[39m, \u001b[32m\"orangutans\"\u001b[39m, \u001b[32m\"monkeys\"\u001b[39m)),\n", " \u001b[33mSome\u001b[39m(\u001b[32m\"LA Zoo\"\u001b[39m),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mMarker\u001b[39m(\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[33mOne\u001b[39m(\u001b[33mRGBA\u001b[39m(\u001b[32m255\u001b[39m, \u001b[32m153\u001b[39m, \u001b[32m51\u001b[39m, \u001b[32m0.6\u001b[39m))),\n", "...\n", "\u001b[36mlayout\u001b[39m: \u001b[32mLayout\u001b[39m = \u001b[33mLayout\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[32m\"Colored Bar Chart\"\u001b[39m),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(Stack),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", ")\n", "\u001b[36mres10_4\u001b[39m: \u001b[32mString\u001b[39m = \u001b[32m\"plot-344621642\"\u001b[39m" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val trace1 = Bar(\n", " Seq(20, 14, 23),\n", " Seq(\"giraffes\", \"orangutans\", \"monkeys\"),\n", " name = \"SF Zoo\",\n", " orientation = Orientation.Horizontal,\n", " marker = Marker(\n", " color = Color.RGBA(55, 128, 191, 0.6),\n", " width = 1\n", " )\n", ")\n", "\n", "val trace2 = Bar(\n", " Seq(12, 18, 29),\n", " Seq(\"giraffes\", \"orangutans\", \"monkeys\"),\n", " name = \"LA Zoo\",\n", " orientation = Orientation.Horizontal,\n", " marker = Marker(\n", " color = Color.RGBA(255, 153, 51, 0.6),\n", " width = 1\n", " )\n", ")\n", "\n", "val data = Seq(trace1, trace2)\n", "\n", "val layout = Layout(\n", " title = \"Colored Bar Chart\",\n", " barmode = BarMode.Stack\n", ")\n", "\n", "plot(data, layout)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Time Series\n", "## Time Series Chart" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "type": "scatter", "x": [ "2013-10-04 22:23:00", "2013-11-04 22:23:00", "2013-12-04 22:23:00" ], "y": [ 1, 3, 6 ] } ], "layout": {} }, "text/html": [ "
\n", "\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[36mdata\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mScatter\u001b[39m] = \u001b[33mList\u001b[39m(\n", " \u001b[33mScatter\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mStrings\u001b[39m(\n", " \u001b[33mList\u001b[39m(\n", " \u001b[32m\"2013-10-04 22:23:00\"\u001b[39m,\n", " \u001b[32m\"2013-11-04 22:23:00\"\u001b[39m,\n", " \u001b[32m\"2013-12-04 22:23:00\"\u001b[39m\n", " )\n", " )\n", " ),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m1.0\u001b[39m, \u001b[32m3.0\u001b[39m, \u001b[32m6.0\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", ")\n", "\u001b[36mres11_1\u001b[39m: \u001b[32mString\u001b[39m = \u001b[32m\"plot-832069438\"\u001b[39m" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val data = Seq(\n", " Scatter(\n", " Seq(\"2013-10-04 22:23:00\", \"2013-11-04 22:23:00\", \"2013-12-04 22:23:00\"),\n", " Seq(1, 3, 6)\n", " )\n", ")\n", "\n", "plot(data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Bubble Charts\n", "## Hover on Text Bubble Chart" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "marker": { "color": [ "rgb(93, 164, 214)", "rgb(255, 144, 14)", "rgb(44, 160, 101)", "rgb(255, 65, 54)" ], "size": [ 40, 60, 80, 100 ] }, "mode": "markers", "text": [ "A\n size = 40", "B\n size = 60", "C\n size = 80", "D\n size = 100" ], "type": "scatter", "x": [ 1, 2, 3, 4 ], "y": [ 10, 11, 12, 13 ] } ], "layout": { "height": 400, "showlegend": false, "title": "Bubble Chart Hover Text", "width": 600 } }, "text/html": [ "
\n", "\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[36mtrace1\u001b[39m: \u001b[32mScatter\u001b[39m = \u001b[33mScatter\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m1.0\u001b[39m, \u001b[32m2.0\u001b[39m, \u001b[32m3.0\u001b[39m, \u001b[32m4.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m10.0\u001b[39m, \u001b[32m11.0\u001b[39m, \u001b[32m12.0\u001b[39m, \u001b[32m13.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mSequence\u001b[39m(\n", " \u001b[33mList\u001b[39m(\n", " \u001b[32m\"\"\"A\n", " size = 40\"\"\"\u001b[39m,\n", " \u001b[32m\"\"\"B\n", " size = 60\"\"\"\u001b[39m,\n", " \u001b[32m\"\"\"C\n", " size = 80\"\"\"\u001b[39m,\n", " \u001b[32m\"\"\"D\n", " size = 100\"\"\"\u001b[39m\n", " )\n", " )\n", " ),\n", " \u001b[33mSome\u001b[39m(\u001b[33mScatterMode\u001b[39m(\u001b[33mSet\u001b[39m(Markers))),\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mMarker\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[33mSequence\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m40\u001b[39m, \u001b[32m60\u001b[39m, \u001b[32m80\u001b[39m, \u001b[32m100\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mSequence\u001b[39m(\n", " \u001b[33mList\u001b[39m(\n", " \u001b[33mRGB\u001b[39m(\u001b[32m93\u001b[39m, \u001b[32m164\u001b[39m, \u001b[32m214\u001b[39m),\n", " \u001b[33mRGB\u001b[39m(\u001b[32m255\u001b[39m, \u001b[32m144\u001b[39m, \u001b[32m14\u001b[39m),\n", " \u001b[33mRGB\u001b[39m(\u001b[32m44\u001b[39m, \u001b[32m160\u001b[39m, \u001b[32m101\u001b[39m),\n", " \u001b[33mRGB\u001b[39m(\u001b[32m255\u001b[39m, \u001b[32m65\u001b[39m, \u001b[32m54\u001b[39m)\n", " )\n", " )\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " )\n", "...\n", "\u001b[36mdata\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mScatter\u001b[39m] = \u001b[33mList\u001b[39m(\n", " \u001b[33mScatter\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m1.0\u001b[39m, \u001b[32m2.0\u001b[39m, \u001b[32m3.0\u001b[39m, \u001b[32m4.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m10.0\u001b[39m, \u001b[32m11.0\u001b[39m, \u001b[32m12.0\u001b[39m, \u001b[32m13.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mSequence\u001b[39m(\n", " \u001b[33mList\u001b[39m(\n", " \u001b[32m\"\"\"A\n", " size = 40\"\"\"\u001b[39m,\n", " \u001b[32m\"\"\"B\n", " size = 60\"\"\"\u001b[39m,\n", " \u001b[32m\"\"\"C\n", " size = 80\"\"\"\u001b[39m,\n", " \u001b[32m\"\"\"D\n", " size = 100\"\"\"\u001b[39m\n", " )\n", " )\n", " ),\n", " \u001b[33mSome\u001b[39m(\u001b[33mScatterMode\u001b[39m(\u001b[33mSet\u001b[39m(Markers))),\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mMarker\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[33mSequence\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m40\u001b[39m, \u001b[32m60\u001b[39m, \u001b[32m80\u001b[39m, \u001b[32m100\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\n", " \u001b[33mSequence\u001b[39m(\n", " \u001b[33mList\u001b[39m(\n", " \u001b[33mRGB\u001b[39m(\u001b[32m93\u001b[39m, \u001b[32m164\u001b[39m, \u001b[32m214\u001b[39m),\n", " \u001b[33mRGB\u001b[39m(\u001b[32m255\u001b[39m, \u001b[32m144\u001b[39m, \u001b[32m14\u001b[39m),\n", " \u001b[33mRGB\u001b[39m(\u001b[32m44\u001b[39m, \u001b[32m160\u001b[39m, \u001b[32m101\u001b[39m),\n", " \u001b[33mRGB\u001b[39m(\u001b[32m255\u001b[39m, \u001b[32m65\u001b[39m, \u001b[32m54\u001b[39m)\n", " )\n", " )\n", " ),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", "...\n", "\u001b[36mlayout\u001b[39m: \u001b[32mLayout\u001b[39m = \u001b[33mLayout\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[32m\"Bubble Chart Hover Text\"\u001b[39m),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(\u001b[32m600\u001b[39m),\n", " \u001b[33mSome\u001b[39m(\u001b[32m400\u001b[39m),\n", " \u001b[33mSome\u001b[39m(false),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", ")\n", "\u001b[36mres12_3\u001b[39m: \u001b[32mString\u001b[39m = \u001b[32m\"plot-625175960\"\u001b[39m" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val trace1 = Scatter(\n", " Seq(1, 2, 3, 4),\n", " Seq(10, 11, 12, 13),\n", " text = Seq(\"\"\"A\n", " size = 40\"\"\", \"\"\"B\n", " size = 60\"\"\", \"\"\"C\n", " size = 80\"\"\", \"\"\"D\n", " size = 100\"\"\"),\n", " mode = ScatterMode(ScatterMode.Markers),\n", " marker = Marker(\n", " color = Seq(Color.RGB(93, 164, 214), Color.RGB(255, 144, 14), Color.RGB(44, 160, 101), Color.RGB(255, 65, 54)),\n", " size = Seq(40, 60, 80, 100)\n", " )\n", ")\n", "\n", "val data = Seq(trace1)\n", "\n", "val layout = Layout(\n", " title = \"Bubble Chart Hover Text\",\n", " showlegend = false,\n", " height = 400,\n", " width = 600\n", ")\n", "\n", "\n", "plot(data, layout)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Filled Area Plots\n", "## Basic Overlaid Area Chart" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "fill": "tozeroy", "type": "scatter", "x": [ 1, 2, 3, 4 ], "y": [ 0, 2, 3, 5 ] }, { "fill": "tonexty", "type": "scatter", "x": [ 1, 2, 3, 4 ], "y": [ 3, 5, 1, 7 ] } ], "layout": {} }, "text/html": [ "
\n", "\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "\u001b[36mtrace1\u001b[39m: \u001b[32mScatter\u001b[39m = \u001b[33mScatter\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m1.0\u001b[39m, \u001b[32m2.0\u001b[39m, \u001b[32m3.0\u001b[39m, \u001b[32m4.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m0.0\u001b[39m, \u001b[32m2.0\u001b[39m, \u001b[32m3.0\u001b[39m, \u001b[32m5.0\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(ToZeroY),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", ")\n", "\u001b[36mtrace2\u001b[39m: \u001b[32mScatter\u001b[39m = \u001b[33mScatter\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m1.0\u001b[39m, \u001b[32m2.0\u001b[39m, \u001b[32m3.0\u001b[39m, \u001b[32m4.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m3.0\u001b[39m, \u001b[32m5.0\u001b[39m, \u001b[32m1.0\u001b[39m, \u001b[32m7.0\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(ToNextY),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", ")\n", "\u001b[36mdata\u001b[39m: \u001b[32mSeq\u001b[39m[\u001b[32mScatter\u001b[39m] = \u001b[33mList\u001b[39m(\n", " \u001b[33mScatter\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m1.0\u001b[39m, \u001b[32m2.0\u001b[39m, \u001b[32m3.0\u001b[39m, \u001b[32m4.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m0.0\u001b[39m, \u001b[32m2.0\u001b[39m, \u001b[32m3.0\u001b[39m, \u001b[32m5.0\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(ToZeroY),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m\n", " ),\n", " \u001b[33mScatter\u001b[39m(\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m1.0\u001b[39m, \u001b[32m2.0\u001b[39m, \u001b[32m3.0\u001b[39m, \u001b[32m4.0\u001b[39m))),\n", " \u001b[33mSome\u001b[39m(\u001b[33mDoubles\u001b[39m(\u001b[33mList\u001b[39m(\u001b[32m3.0\u001b[39m, \u001b[32m5.0\u001b[39m, \u001b[32m1.0\u001b[39m, \u001b[32m7.0\u001b[39m))),\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[32mNone\u001b[39m,\n", " \u001b[33mSome\u001b[39m(ToNextY),\n", " \u001b[32mNone\u001b[39m,\n", "...\n", "\u001b[36mres13_3\u001b[39m: \u001b[32mString\u001b[39m = \u001b[32m\"plot-608795673\"\u001b[39m" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val trace1 = Scatter(\n", " Seq(1, 2, 3, 4),\n", " Seq(0, 2, 3, 5),\n", " fill = Fill.ToZeroY\n", ")\n", "\n", "val trace2 = Scatter(\n", " Seq(1, 2, 3, 4),\n", " Seq(3, 5, 1, 7),\n", " fill = Fill.ToNextY\n", ")\n", "\n", "val data = Seq(trace1, trace2)\n", "\n", "plot(data)" ] } ], "metadata": { "kernelspec": { "display_name": "Scala", "language": "scala", "name": "scala" }, "language_info": { "codemirror_mode": "text/x-scala", "file_extension": ".scala", "mimetype": "text/x-scala", "name": "scala", "nbconvert_exporter": "script", "version": "2.12.7" } }, "nbformat": 4, "nbformat_minor": 2 }