{ "cells": [ { "cell_type": "markdown", "id": "reserved-institution", "metadata": {}, "source": [ "### Dotplot Geometry" ] }, { "cell_type": "code", "execution_count": 1, "id": "engaging-filter", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"mhyL9x\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"library\">\n", " if(!window.letsPlotCallQueue) {\n", " window.letsPlotCallQueue = [];\n", " }; \n", " window.letsPlotCall = function(f) {\n", " window.letsPlotCallQueue.push(f);\n", " };\n", " (function() {\n", " var script = document.createElement(\"script\");\n", " script.type = \"text/javascript\";\n", " script.src = \"https://cdn.jsdelivr.net/gh/JetBrains/lets-plot@v3.2.0/js-package/distr/lets-plot.min.js\";\n", " script.onload = function() {\n", " window.letsPlotCall = function(f) {f();};\n", " window.letsPlotCallQueue.forEach(function(f) {f();});\n", " window.letsPlotCallQueue = [];\n", " \n", " \n", " };\n", " script.onerror = function(event) {\n", " window.letsPlotCall = function(f) {};\n", " window.letsPlotCallQueue = [];\n", " var div = document.createElement(\"div\");\n", " div.style.color = 'darkred';\n", " div.textContent = 'Error loading Lets-Plot JS';\n", " document.getElementById(\"mhyL9x\").appendChild(div);\n", " };\n", " var e = document.getElementById(\"mhyL9x\");\n", " e.appendChild(script);\n", " })();\n", " </script>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ " <div id=\"kotlin_out_0\"></div>\n", " <script type=\"text/javascript\">\n", " if(!window.kotlinQueues) {\n", " window.kotlinQueues = {};\n", " }\n", " if(!window.kotlinQueues[\"DataFrame\"]) {\n", " var resQueue = [];\n", " window.kotlinQueues[\"DataFrame\"] = resQueue;\n", " window[\"call_DataFrame\"] = function(f) {\n", " resQueue.push(f);\n", " }\n", " }\n", " (function (){\n", " var modifiers = [(function(script) {\n", " script.src = \"https://cdn.jsdelivr.net/gh/Kotlin/dataframe@3db46ccccaa1291c0627307d64133317f545e6ae/core/src/main/resources/init.js\"\n", " script.type = \"text/javascript\";\n", "})];\n", " var e = document.getElementById(\"kotlin_out_0\");\n", " modifiers.forEach(function (gen) {\n", " var script = document.createElement(\"script\");\n", " gen(script)\n", " script.addEventListener(\"load\", function() {\n", " window[\"call_DataFrame\"] = function(f) {f();};\n", " window.kotlinQueues[\"DataFrame\"].forEach(function(f) {f();});\n", " window.kotlinQueues[\"DataFrame\"] = [];\n", " }, false);\n", " script.addEventListener(\"error\", function() {\n", " window[\"call_DataFrame\"] = function(f) {};\n", " window.kotlinQueues[\"DataFrame\"] = [];\n", " var div = document.createElement(\"div\");\n", " div.style.color = 'darkred';\n", " div.textContent = 'Error loading resource DataFrame';\n", " document.getElementById(\"kotlin_out_0\").appendChild(div);\n", " }, false);\n", " \n", " e.appendChild(script);\n", " });\n", " })();\n", " </script>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ " <style>\n", " :root {\n", " --background: #fff;\n", " --background-odd: #f5f5f5;\n", " --background-hover: #d9edfd;\n", " --header-text-color: #474747;\n", " --text-color: #848484;\n", " --text-color-dark: #000;\n", " --text-color-medium: #737373;\n", " --text-color-pale: #b3b3b3;\n", " --inner-border-color: #aaa;\n", " --bold-border-color: #000;\n", " --link-color: #296eaa;\n", " --link-color-pale: #296eaa;\n", " --link-hover: #1a466c;\n", "}\n", "\n", ":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", " --background: #303030;\n", " --background-odd: #3c3c3c;\n", " --background-hover: #464646;\n", " --header-text-color: #dddddd;\n", " --text-color: #b3b3b3;\n", " --text-color-dark: #dddddd;\n", " --text-color-medium: #b2b2b2;\n", " --text-color-pale: #737373;\n", " --inner-border-color: #707070;\n", " --bold-border-color: #777777;\n", " --link-color: #008dc0;\n", " --link-color-pale: #97e1fb;\n", " --link-hover: #00688e;\n", "}\n", "\n", "p.dataframe_description {\n", " color: var(--text-color-dark);\n", "}\n", "\n", "table.dataframe {\n", " font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", " font-size: 12px;\n", " background-color: var(--background);\n", " color: var(--text-color-dark);\n", " border: none;\n", " border-collapse: collapse;\n", "}\n", "\n", "table.dataframe th, td {\n", " padding: 6px;\n", " border: 1px solid transparent;\n", " text-align: left;\n", "}\n", "\n", "table.dataframe th {\n", " background-color: var(--background);\n", " color: var(--header-text-color);\n", "}\n", "\n", "table.dataframe td {\n", " vertical-align: top;\n", "}\n", "\n", "table.dataframe th.bottomBorder {\n", " border-bottom-color: var(--bold-border-color);\n", "}\n", "\n", "table.dataframe tbody > tr:nth-child(odd) {\n", " background: var(--background-odd);\n", "}\n", "\n", "table.dataframe tbody > tr:nth-child(even) {\n", " background: var(--background);\n", "}\n", "\n", "table.dataframe tbody > tr:hover {\n", " background: var(--background-hover);\n", "}\n", "\n", "table.dataframe a {\n", " cursor: pointer;\n", " color: var(--link-color);\n", " text-decoration: none;\n", "}\n", "\n", "table.dataframe tr:hover > td a {\n", " color: var(--link-color-pale);\n", "}\n", "\n", "table.dataframe a:hover {\n", " color: var(--link-hover);\n", " text-decoration: underline;\n", "}\n", "\n", "table.dataframe img {\n", " max-width: fit-content;\n", "}\n", "\n", "table.dataframe th.complex {\n", " background-color: var(--background);\n", " border: 1px solid var(--background);\n", "}\n", "\n", "table.dataframe .leftBorder {\n", " border-left-color: var(--inner-border-color);\n", "}\n", "\n", "table.dataframe .rightBorder {\n", " border-right-color: var(--inner-border-color);\n", "}\n", "\n", "table.dataframe .rightAlign {\n", " text-align: right;\n", "}\n", "\n", "table.dataframe .expanderSvg {\n", " width: 8px;\n", " height: 8px;\n", " margin-right: 3px;\n", "}\n", "\n", "table.dataframe .expander {\n", " display: flex;\n", " align-items: center;\n", "}\n", "\n", "/* formatting */\n", "\n", "table.dataframe .null {\n", " color: var(--text-color-pale);\n", "}\n", "\n", "table.dataframe .structural {\n", " color: var(--text-color-medium);\n", " font-weight: bold;\n", "}\n", "\n", "table.dataframe .dataFrameCaption {\n", " font-weight: bold;\n", "}\n", "\n", "table.dataframe .numbers {\n", " color: var(--text-color-dark);\n", "}\n", "\n", "table.dataframe td:hover .formatted .structural, .null {\n", " color: var(--text-color-dark);\n", "}\n", "\n", "table.dataframe tr:hover .formatted .structural, .null {\n", " color: var(--text-color-dark);\n", "}\n", "\n", "\n", " </style>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%useLatestDescriptors\n", "%use lets-plot\n", "%use dataframe" ] }, { "cell_type": "code", "execution_count": 2, "id": "trying-liberty", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Lets-Plot Kotlin API v.4.4.1. Frontend: Notebook with dynamically loaded JS. Lets-Plot JS v.3.2.0." ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "LetsPlot.getInfo()" ] }, { "cell_type": "code", "execution_count": 3, "id": "serial-matthew", "metadata": {}, "outputs": [ { "data": { "application/kotlindataframe+json": "{\"nrow\":5,\"ncol\":12,\"columns\":[\"untitled\",\"manufacturer\",\"model\",\"displ\",\"year\",\"cyl\",\"trans\",\"drv\",\"cty\",\"hwy\",\"fl\",\"class\"],\"kotlin_dataframe\":[{\"untitled\":1,\"manufacturer\":\"audi\",\"model\":\"a4\",\"displ\":1.8,\"year\":1999,\"cyl\":4,\"trans\":\"auto(l5)\",\"drv\":\"f\",\"cty\":18,\"hwy\":29,\"fl\":\"p\",\"class\":\"compact\"},{\"untitled\":2,\"manufacturer\":\"audi\",\"model\":\"a4\",\"displ\":1.8,\"year\":1999,\"cyl\":4,\"trans\":\"manual(m5)\",\"drv\":\"f\",\"cty\":21,\"hwy\":29,\"fl\":\"p\",\"class\":\"compact\"},{\"untitled\":3,\"manufacturer\":\"audi\",\"model\":\"a4\",\"displ\":2.0,\"year\":2008,\"cyl\":4,\"trans\":\"manual(m6)\",\"drv\":\"f\",\"cty\":20,\"hwy\":31,\"fl\":\"p\",\"class\":\"compact\"},{\"untitled\":4,\"manufacturer\":\"audi\",\"model\":\"a4\",\"displ\":2.0,\"year\":2008,\"cyl\":4,\"trans\":\"auto(av)\",\"drv\":\"f\",\"cty\":21,\"hwy\":30,\"fl\":\"p\",\"class\":\"compact\"},{\"untitled\":5,\"manufacturer\":\"audi\",\"model\":\"a4\",\"displ\":2.8,\"year\":1999,\"cyl\":6,\"trans\":\"auto(l5)\",\"drv\":\"f\",\"cty\":16,\"hwy\":26,\"fl\":\"p\",\"class\":\"compact\"}]}", "text/html": [ " <html>\n", " <head>\n", " <style type=\"text/css\">\n", " :root {\n", " --background: #fff;\n", " --background-odd: #f5f5f5;\n", " --background-hover: #d9edfd;\n", " --header-text-color: #474747;\n", " --text-color: #848484;\n", " --text-color-dark: #000;\n", " --text-color-medium: #737373;\n", " --text-color-pale: #b3b3b3;\n", " --inner-border-color: #aaa;\n", " --bold-border-color: #000;\n", " --link-color: #296eaa;\n", " --link-color-pale: #296eaa;\n", " --link-hover: #1a466c;\n", "}\n", "\n", ":root[theme=\"dark\"], :root [data-jp-theme-light=\"false\"], .dataframe_dark{\n", " --background: #303030;\n", " --background-odd: #3c3c3c;\n", " --background-hover: #464646;\n", " --header-text-color: #dddddd;\n", " --text-color: #b3b3b3;\n", " --text-color-dark: #dddddd;\n", " --text-color-medium: #b2b2b2;\n", " --text-color-pale: #737373;\n", " --inner-border-color: #707070;\n", " --bold-border-color: #777777;\n", " --link-color: #008dc0;\n", " --link-color-pale: #97e1fb;\n", " --link-hover: #00688e;\n", "}\n", "\n", "p.dataframe_description {\n", " color: var(--text-color-dark);\n", "}\n", "\n", "table.dataframe {\n", " font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n", " font-size: 12px;\n", " background-color: var(--background);\n", " color: var(--text-color-dark);\n", " border: none;\n", " border-collapse: collapse;\n", "}\n", "\n", "table.dataframe th, td {\n", " padding: 6px;\n", " border: 1px solid transparent;\n", " text-align: left;\n", "}\n", "\n", "table.dataframe th {\n", " background-color: var(--background);\n", " color: var(--header-text-color);\n", "}\n", "\n", "table.dataframe td {\n", " vertical-align: top;\n", "}\n", "\n", "table.dataframe th.bottomBorder {\n", " border-bottom-color: var(--bold-border-color);\n", "}\n", "\n", "table.dataframe tbody > tr:nth-child(odd) {\n", " background: var(--background-odd);\n", "}\n", "\n", "table.dataframe tbody > tr:nth-child(even) {\n", " background: var(--background);\n", "}\n", "\n", "table.dataframe tbody > tr:hover {\n", " background: var(--background-hover);\n", "}\n", "\n", "table.dataframe a {\n", " cursor: pointer;\n", " color: var(--link-color);\n", " text-decoration: none;\n", "}\n", "\n", "table.dataframe tr:hover > td a {\n", " color: var(--link-color-pale);\n", "}\n", "\n", "table.dataframe a:hover {\n", " color: var(--link-hover);\n", " text-decoration: underline;\n", "}\n", "\n", "table.dataframe img {\n", " max-width: fit-content;\n", "}\n", "\n", "table.dataframe th.complex {\n", " background-color: var(--background);\n", " border: 1px solid var(--background);\n", "}\n", "\n", "table.dataframe .leftBorder {\n", " border-left-color: var(--inner-border-color);\n", "}\n", "\n", "table.dataframe .rightBorder {\n", " border-right-color: var(--inner-border-color);\n", "}\n", "\n", "table.dataframe .rightAlign {\n", " text-align: right;\n", "}\n", "\n", "table.dataframe .expanderSvg {\n", " width: 8px;\n", " height: 8px;\n", " margin-right: 3px;\n", "}\n", "\n", "table.dataframe .expander {\n", " display: flex;\n", " align-items: center;\n", "}\n", "\n", "/* formatting */\n", "\n", "table.dataframe .null {\n", " color: var(--text-color-pale);\n", "}\n", "\n", "table.dataframe .structural {\n", " color: var(--text-color-medium);\n", " font-weight: bold;\n", "}\n", "\n", "table.dataframe .dataFrameCaption {\n", " font-weight: bold;\n", "}\n", "\n", "table.dataframe .numbers {\n", " color: var(--text-color-dark);\n", "}\n", "\n", "table.dataframe td:hover .formatted .structural, .null {\n", " color: var(--text-color-dark);\n", "}\n", "\n", "table.dataframe tr:hover .formatted .structural, .null {\n", " color: var(--text-color-dark);\n", "}\n", "\n", "\n", "\n", "\n", " </style>\n", " </head>\n", " <body>\n", " \n", "<table class=\"dataframe\" id=\"df_-16777216\"></table>\n", "\n", "<p class=\"dataframe_description\">DataFrame: rowsCount = 5, columnsCount = 12</p>\n", " </body>\n", " <script>\n", " \n", "/*<!--*/\n", "call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: \"<span title=\\\"untitled: Int\\\">untitled</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">3</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">5</span></span>\"] }, \n", "{ name: \"<span title=\\\"manufacturer: String\\\">manufacturer</span>\", children: [], rightAlign: false, values: [\"audi\",\"audi\",\"audi\",\"audi\",\"audi\"] }, \n", "{ name: \"<span title=\\\"model: String\\\">model</span>\", children: [], rightAlign: false, values: [\"a4\",\"a4\",\"a4\",\"a4\",\"a4\"] }, \n", "{ name: \"<span title=\\\"displ: Double\\\">displ</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1,8</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1,8</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2,0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2,0</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2,8</span></span>\"] }, \n", "{ name: \"<span title=\\\"year: Int\\\">year</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1999</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1999</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2008</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">2008</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">1999</span></span>\"] }, \n", "{ name: \"<span title=\\\"cyl: Int\\\">cyl</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">4</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">6</span></span>\"] }, \n", "{ name: \"<span title=\\\"trans: String\\\">trans</span>\", children: [], rightAlign: false, values: [\"auto(l5)\",\"manual(m5)\",\"manual(m6)\",\"auto(av)\",\"auto(l5)\"] }, \n", "{ name: \"<span title=\\\"drv: String\\\">drv</span>\", children: [], rightAlign: false, values: [\"f\",\"f\",\"f\",\"f\",\"f\"] }, \n", "{ name: \"<span title=\\\"cty: Int\\\">cty</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">18</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">21</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">20</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">21</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">16</span></span>\"] }, \n", "{ name: \"<span title=\\\"hwy: Int\\\">hwy</span>\", children: [], rightAlign: true, values: [\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">29</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">29</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">31</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">30</span></span>\",\"<span class=\\\"formatted\\\" title=\\\"\\\"><span class=\\\"numbers\\\">26</span></span>\"] }, \n", "{ name: \"<span title=\\\"fl: String\\\">fl</span>\", children: [], rightAlign: false, values: [\"p\",\"p\",\"p\",\"p\",\"p\"] }, \n", "{ name: \"<span title=\\\"class: String\\\">class</span>\", children: [], rightAlign: false, values: [\"compact\",\"compact\",\"compact\",\"compact\",\"compact\"] }, \n", "], id: -16777216, rootId: -16777216, totalRows: 5 } ) });\n", "/*-->*/\n", "\n", "call_DataFrame(function() { DataFrame.renderTable(-16777216) });\n", "\n", "\n", " </script>\n", " </html>" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "var mpg = DataFrame.readCSV(\"https://raw.githubusercontent.com/JetBrains/lets-plot-kotlin/master/docs/examples/data/mpg.csv\")\n", "mpg.head()\n" ] }, { "cell_type": "code", "execution_count": 4, "id": "latter-manual", "metadata": {}, "outputs": [], "source": [ "val mpg32 = mpg.shuffle().take(32)" ] }, { "cell_type": "code", "execution_count": 5, "id": "juvenile-continuity", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"90RfJh\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"mapping\":{\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"stat\":\"dotplot\",\n", "\"position\":\"identity\",\n", "\"geom\":\"dotplot\",\n", "\"data\":{\n", "\"..binwidth..\":[0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333],\n", "\"..count..\":[1.0,1.0,1.0,4.0,2.0,3.0,1.0,1.0,3.0,3.0,5.0,3.0,3.0,1.0],\n", "\"hwy\":[12.0,14.0,16.0,17.0,18.0,19.0,20.0,21.0,24.0,25.0,26.0,27.0,29.0,31.0]\n", "}\n", "}]\n", "};\n", " var plotContainer = document.getElementById(\"90RfJh\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "letsPlot(mpg32.toMap()) + geomDotplot {x = \"hwy\"}" ] }, { "cell_type": "markdown", "id": "solved-skirt", "metadata": {}, "source": [ "### `geomDotplot()` and `geomDensity()`" ] }, { "cell_type": "code", "execution_count": 6, "id": "informed-protection", "metadata": {}, "outputs": [], "source": [ "val PACIFIC_BLUE = \"#118ed8\"" ] }, { "cell_type": "code", "execution_count": 7, "id": "signed-child", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"X0pRIX\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"density\",\n", "\"position\":\"identity\",\n", "\"geom\":\"density\",\n", "\"fill\":\"#118ed8\",\n", "\"data\":{\n", "\"hwy\":[12.0,12.037181996086106,12.074363992172211,12.111545988258317,12.148727984344422,12.185909980430528,12.223091976516635,12.26027397260274,12.297455968688846,12.33463796477495,12.371819960861057,12.409001956947163,12.446183953033268,12.483365949119374,12.520547945205479,12.557729941291585,12.594911937377692,12.632093933463796,12.669275929549903,12.706457925636007,12.743639921722114,12.780821917808218,12.818003913894325,12.855185909980431,12.892367906066536,12.929549902152642,12.966731898238747,13.003913894324853,13.04109589041096,13.078277886497064,13.11545988258317,13.152641878669275,13.189823874755382,13.227005870841488,13.264187866927593,13.301369863013699,13.338551859099804,13.37573385518591,13.412915851272015,13.450097847358121,13.487279843444227,13.524461839530332,13.561643835616438,13.598825831702545,13.63600782778865,13.673189823874756,13.71037181996086,13.747553816046967,13.784735812133071,13.821917808219178,13.859099804305284,13.896281800391389,13.933463796477495,13.970645792563602,14.007827788649706,14.045009784735813,14.082191780821917,14.119373776908024,14.156555772994128,14.193737769080235,14.230919765166341,14.268101761252446,14.305283757338552,14.342465753424658,14.379647749510763,14.416829745596868,14.454011741682974,14.49119373776908,14.528375733855185,14.565557729941291,14.602739726027398,14.639921722113503,14.677103718199609,14.714285714285714,14.75146771037182,14.788649706457925,14.825831702544031,14.863013698630137,14.900195694716242,14.937377690802348,14.974559686888455,15.01174168297456,15.048923679060666,15.08610567514677,15.123287671232877,15.160469667318981,15.197651663405088,15.234833659491194,15.272015655577299,15.309197651663405,15.346379647749512,15.383561643835616,15.42074363992172,15.457925636007827,15.495107632093934,15.532289628180038,15.569471624266145,15.606653620352251,15.643835616438356,15.681017612524462,15.718199608610568,15.755381604696673,15.792563600782778,15.829745596868884,15.86692759295499,15.904109589041095,15.941291585127201,15.978473581213308,16.015655577299412,16.052837573385517,16.090019569471625,16.12720156555773,16.164383561643834,16.201565557729943,16.238747553816047,16.275929549902152,16.313111545988257,16.350293542074365,16.38747553816047,16.424657534246574,16.461839530332682,16.499021526418787,16.53620352250489,16.573385518590996,16.610567514677104,16.64774951076321,16.684931506849317,16.72211350293542,16.759295499021526,16.79647749510763,16.833659491193735,16.870841487279844,16.908023483365948,16.945205479452056,16.98238747553816,17.019569471624266,17.05675146771037,17.09393346379648,17.131115459882583,17.168297455968688,17.205479452054796,17.2426614481409,17.279843444227005,17.31702544031311,17.354207436399218,17.391389432485322,17.428571428571427,17.465753424657535,17.50293542074364,17.540117416829744,17.57729941291585,17.614481409001957,17.651663405088062,17.68884540117417,17.726027397260275,17.76320939334638,17.800391389432484,17.83757338551859,17.874755381604697,17.9119373776908,17.94911937377691,17.986301369863014,18.02348336594912,18.060665362035223,18.09784735812133,18.135029354207436,18.17221135029354,18.20939334637965,18.246575342465754,18.246575342465754,18.283757338551858,18.320939334637963,18.35812133072407,18.395303326810176,18.43248532289628,18.46966731898239,18.506849315068493,18.544031311154598,18.581213307240702,18.61839530332681,18.655577299412915,18.692759295499023,18.729941291585128,18.767123287671232,18.804305283757337,18.84148727984344,18.87866927592955,18.915851272015654,18.953033268101763,18.990215264187867,19.027397260273972,19.064579256360076,19.101761252446185,19.13894324853229,19.176125244618394,19.213307240704502,19.250489236790607,19.28767123287671,19.324853228962816,19.362035225048924,19.39921722113503,19.436399217221137,19.47358121330724,19.510763209393346,19.54794520547945,19.585127201565555,19.622309197651663,19.659491193737768,19.696673189823876,19.73385518590998,19.771037181996086,19.80821917808219,19.8454011741683,19.882583170254403,19.919765166340508,19.956947162426616,19.99412915851272,20.031311154598825,20.06849315068493,20.105675146771034,20.142857142857142,20.18003913894325,20.217221135029355,20.25440313111546,20.291585127201564,20.32876712328767,20.365949119373777,20.403131115459882,20.44031311154599,20.477495107632095,20.5146771037182,20.551859099804304,20.58904109589041,20.626223091976517,20.66340508806262,20.70058708414873,20.737769080234834,20.77495107632094,20.812133072407043,20.849315068493148,20.886497064579256,20.92367906066536,20.96086105675147,20.998043052837573,21.035225048923678,21.072407045009783,21.109589041095887,21.146771037181995,21.183953033268104,21.22113502935421,21.258317025440313,21.295499021526417,21.332681017612522,21.36986301369863,21.407045009784735,21.444227005870843,21.481409001956948,21.518590998043052,21.555772994129157,21.59295499021526,21.63013698630137,21.667318982387474,21.704500978473583,21.741682974559687,21.77886497064579,21.816046966731896,21.853228962818,21.89041095890411,21.927592954990217,21.964774951076322,22.001956947162427,22.03913894324853,22.076320939334636,22.113502935420744,22.15068493150685,22.187866927592957,22.22504892367906,22.262230919765166,22.29941291585127,22.336594911937375,22.373776908023483,22.410958904109588,22.448140900195696,22.4853228962818,22.522504892367905,22.55968688845401,22.596868884540115,22.634050880626223,22.671232876712327,22.708414872798436,22.74559686888454,22.782778864970645,22.81996086105675,22.857142857142854,22.894324853228962,22.93150684931507,22.968688845401175,23.00587084148728,23.043052837573384,23.043052837573384,23.08023483365949,23.117416829745597,23.1545988258317,23.19178082191781,23.228962818003914,23.26614481409002,23.303326810176124,23.34050880626223,23.377690802348337,23.41487279843444,23.45205479452055,23.489236790606654,23.52641878669276,23.563600782778863,23.600782778864968,23.637964774951076,23.67514677103718,23.71232876712329,23.749510763209393,23.786692759295498,23.823874755381603,23.861056751467707,23.898238747553815,23.935420743639924,23.972602739726028,24.009784735812133,24.046966731898237,24.084148727984342,24.12133072407045,24.158512720156555,24.195694716242663,24.232876712328768,24.270058708414872,24.307240704500977,24.34442270058708,24.38160469667319,24.418786692759294,24.455968688845402,24.493150684931507,24.53033268101761,24.567514677103716,24.60469667318982,24.64187866927593,24.679060665362034,24.716242661448142,24.753424657534246,24.79060665362035,24.827788649706456,24.86497064579256,24.90215264187867,24.939334637964777,24.97651663405088,25.013698630136986,25.05088062622309,25.088062622309195,25.125244618395303,25.162426614481408,25.199608610567516,25.23679060665362,25.273972602739725,25.31115459882583,25.348336594911935,25.385518590998043,25.422700587084147,25.459882583170256,25.49706457925636,25.534246575342465,25.57142857142857,25.608610567514674,25.645792563600782,25.682974559686887,25.720156555772995,25.7573385518591,25.794520547945204,25.83170254403131,25.868884540117413,25.90606653620352,25.94324853228963,25.980430528375734,26.01761252446184,26.054794520547944,26.09197651663405,26.129158512720156,26.16634050880626,26.20352250489237,26.240704500978474,26.27788649706458,26.315068493150683,26.352250489236788,26.389432485322896,26.389432485322896,26.426614481409,26.46379647749511,26.500978473581213,26.538160469667318,26.575342465753423,26.612524461839527,26.649706457925635,26.686888454011743,26.724070450097848,26.761252446183953,26.798434442270057,26.835616438356162,26.87279843444227,26.909980430528375,26.947162426614483,26.984344422700588,27.021526418786692,27.058708414872797,27.0958904109589,27.13307240704501,27.170254403131114,27.207436399217222,27.244618395303327,27.28180039138943,27.318982387475536,27.35616438356164,27.39334637964775,27.430528375733854,27.467710371819962,27.504892367906066,27.54207436399217,27.579256360078276,27.61643835616438,27.65362035225049,27.690802348336597,27.7279843444227,27.765166340508806,27.80234833659491,27.839530332681015,27.876712328767123,27.913894324853228,27.951076320939336,27.98825831702544,28.025440313111545,28.06262230919765,28.099804305283758,28.136986301369863,28.174168297455967,28.211350293542072,28.24853228962818,28.285714285714285,28.32289628180039,28.360078277886497,28.397260273972602,28.434442270058707,28.471624266144815,28.50880626223092,28.545988258317024,28.58317025440313,28.620352250489237,28.65753424657534,28.694716242661446,28.731898238747554,28.76908023483366,28.806262230919764,28.843444227005868,28.880626223091976,28.91780821917808,28.954990215264186,28.992172211350294,29.0293542074364,29.066536203522503,29.10371819960861,29.140900195694716,29.17808219178082,29.215264187866925,29.252446183953033,29.289628180039138,29.326810176125242,29.36399217221135,29.401174168297455,29.43835616438356,29.475538160469668,29.512720156555773,29.549902152641877,29.587084148727982,29.62426614481409,29.661448140900195,29.6986301369863,29.735812133072407,29.772994129158512,29.810176125244617,29.84735812133072,29.88454011741683,29.921722113502934,29.95890410958904,29.996086105675147,30.03326810176125,30.070450097847356,30.107632093933464,30.14481409001957,30.181996086105674,30.219178082191778,30.256360078277886,30.29354207436399,30.330724070450096,30.367906066536204,30.40508806262231,30.442270058708413,30.47945205479452,30.516634050880626,30.55381604696673,30.590998043052835,30.628180039138943,30.665362035225048,30.702544031311152,30.73972602739726,30.776908023483365,30.81409001956947,30.851272015655578,30.888454011741683,30.925636007827787,30.962818003913892,31.0],\n", "\"..density..\":[0.012658903677299426,0.012836685949069703,0.013016303213470835,0.013197793363607975,0.013381195199381694,0.01356654838770548,0.013753893419632277,0.013943271564390394,0.014134724820334088,0.014328295862821076,0.014524027989034962,0.014721965059777173,0.014922151438258754,0.01512463192592997,0.015329451695390581,0.01553665622043196,0.015746291203267065,0.015958402499012054,0.016173036037489666,0.016390237742430414,0.01661005344815522,0.016832528813828428,0.017057709235377954,0.017285639755184264,0.017516364969647053,0.017749928934744957,0.01798637506970821,0.01822574605893216,0.018468083752263678,0.018713429063798744,0.018961821869335475,0.01921330090263102,0.019467903650617024,0.01972566624773201,0.01998662336953514,0.020250808125768432,0.02051825195304049,0.020788984507306995,0.021063033556328017,0.021340424872285012,0.021621182124743156,0.0219053267741479,0.022192877966046104,0.02248385242622542,0.02277826435696583,0.023076125334599604,0.023377444208576164,0.023682227002229893,0.02399047681544744,0.024302193729433413,0.024617374713769832,0.024936013535966348,0.025258100673695383,0.025583623229904873,0.025912564850999843,0.026244905648280397,0.026580622122821754,0.02691968709397813,0.027262069631688667,0.027607734992759425,0.027956644561291225,0.028308755793417795,0.028664022166514244,0.029022393133028693,0.02938381407908625,0.029748226288005945,0.030115566908865996,0.030485768930244822,0.030858761159259167,0.031234468206011834,0.031612810473553965,0.031993704153459035,0.03237706122709718,0.032762789472689194,0.03315079247821107,0.0335409696602112,0.03393321628859234,0.034327423517400465,0.034723478421655476,0.035121264040245195,0.0355206594248972,0.035921539695231534,0.03632377609988833,0.03672723608371189,0.037131783360966224,0.0375372779945435,0.037943576481118124,0.038350531842189145,0.03875799372094373,0.039165808484862764,0.03957381933398207,0.039981866414710826,0.04038978693910102,0.04079741530945001,0.04120458324811101,0.04161111993237572,0.04201685213428555,0.04242160436521748,0.04282519902508486,0.04322745655598164,0.04362819560009483,0.0440272331616985,0.04442438477303833,0.0448194646639072,0.045212285934706054,0.04560266073277886,0.04599040043180392,0.04637531581401792,0.04675721725504564,0.04713591491110289,0.04751121890833454,0.047882939534049415,0.04825088742960598,0.04861487378470411,0.0489747105328327,0.04933021054762241,0.04968118783985148,0.05002745775484976,0.05036883717004798,0.050705144692417006,0.05103620085554264,0.05136182831608313,0.05168185204935617,0.051996099543804894,0.05230440099409376,0.05260658949258745,0.05290250121896979,0.05319197562776071,0.053474855633495556,0.05375098779333251,0.05402022248685956,0.05428241409287693,0.05453742116293503,0.05478510659141478,0.05502533778194051,0.055257986809924206,0.05548293058104323,0.055700050985462164,0.055909235047614816,0.0561103750713701,0.05630336878041108,0.056488119453665525,0.056664536055632736,0.05683253336145821,0.056992032076616454,0.057142958951070834,0.05728524688778297,0.057418835045458944,0.05754366893541987,0.05765970051249947,0.05776688825987297,0.05786519726773551,0.05795459930575116,0.058035072889204786,0.058106603338796,0.05816918283402241,0.058222810460105745,0.0582674922484252,0.058303241210426765,0.05833007736498638,0.05834802775921239,0.05835712648267821,0.05835741467508573,0.058348940527364064,0.058331759276218365,0.05830593319214521,0.058271531560943036,0.05822863065874802,0.058177313720633325,0.058177313720633325,0.05811767090281588,0.058049799238519634,0.0579738025875498,0.05788979157963866,0.057797883551626766,0.057698202478549517,0.057590878898704255,0.05747604983277435,0.05735385869709508,0.05722445521114703,0.05708799529936694,0.05694464098737094,0.05679456029268756,0.05663792711009976,0.05647492109170179,0.05630572752177491,0.0561305371865935,0.055949546239271446,0.0557629560597636,0.0555709731101387,0.05537380878524212,0.05517167925886852,0.054964805325567224,0.05475341223820344,0.0545377295414023,0.05431799090100127,0.05409443392964145,0.05386730000862594,0.05363683410617846,0.05340328459223362,0.053166903049893584,0.05292794408368552,0.052686665124756935,0.05244332623314551,0.05219818989726238,0.05195152083072845,0.05170358576670411,0.05145465324985456,0.05120499342609301,0.05095487783024661,0.0507045791717893,0.05045437111878839,0.05020452808021205,0.04995532498674662,0.04970703707027256,0.04945993964215185,0.049214307870477245,0.048970416556438384,0.048728539909959005,0.0484889513247621,0.04825192315301994,0.04801772647974936,0.047786630897111645,0.047558904278779394,0.04733481255453467,0.04711461948526212,0.046898586438504655,0.046686972164749124,0.046480032574611085,0.046278020517090686,0.04608118555907092,0.04588977376623228,0.04570402748555956,0.04552418512961655,0.04535048096276679,0.045183144889519196,0.045022402245178846,0.044868473588983736,0.04472157449991025,0.04458191537532972,0.04444970123270025,0.04432513151447793,0.04420839989643242,0.04409969409955209,0.04399919570572395,0.043907079977373836,0.04382351568125224,0.04374866491655054,0.04368268294753156,0.04362571804085888,0.04357791130780655,0.04353939655153124,0.0435103001195866,0.0434907407618578,0.04348082949409313,0.04348066946720602,0.04349035584251996,0.04350997567312447,0.043539607791508644,0.043579322703634175,0.043629182489607704,0.04368924071110615,0.043759542325707834,0.04384012360827375,0.04393101207952187,0.04403222644193069,0.04414377652310215,0.04426566322671075,0.04439787849115665,0.04454040525603636,0.04469321743653754,0.04485627990585639,0.045029548485730514,0.0452129699451716,0.045406482007473936,0.04561001336556911,0.04582348370578517,0.04604680374006338,0.04627987524667476,0.04652259111947027,0.046774835425688964,0.047036483472338624,0.04730740188115458,0.047587448672130654,0.04787647335560805,0.04817431703289638,0.048480812505390485,0.048795784392137304,0.049119049255794474,0.04945041573691384,0.04978968469646914,0.05013664936653942,0.050491095509045875,0.05085280158243059,0.051221538916153705,0.051597071892874186,0.05197915813816971,0.05236754871763847,0.05276198834121541,0.05276198834121541,0.0531622155745255,0.053567963057084014,0.05397895772714491,0.05439492105298703,0.054815569270417835,0.05524061362626394,0.05566976062760851,0.05610271229652525,0.056539166430049824,0.05697881686511982,0.05742135374820669,0.057866463809353216,0.05831383064032277,0.05876313497655866,0.059214054982644294,0.05966626654094837,0.06011944354313121,0.06057325818418458,0.06102738125866924,0.06148148245881054,0.06193523067410718,0.062388294292103526,0.06284034149997378,0.0632910405865595,0.06374006024450392,0.06418706987211988,0.06463173987462927,0.06507374196440967,0.06551274945988407,0.06594843758268772,0.06638048375275002,0.0668085678809273,0.06723237265882569,0.0676515838454561,0.06806589055036459,0.0684749855128875,0.06887856537718151,0.06927633096268783,0.0696679875296897,0.07005324503963475,0.07043181840989368,0.07080342776263845,0.07116779866752967,0.07152466237790898,0.0718737560602047,0.07221482301626395,0.07254761289833878,0.07287188191645959,0.07318739303794354,0.07349391617879507,0.07379122838676708,0.07407911401586484,0.0743573648920859,0.07462578047020269,0.07488416798140825,0.07513234257165767,0.07537012743055402,0.07559735391063963,0.07581386163696922,0.07601949860685646,0.07621412127969926,0.0763975946568053,0.07656979235115441,0.07673059664704965,0.07687989854962515,0.0770175978241924,0.07714360302542601,0.0772578315164016,0.07736020947751687,0.0774506719053416,0.07752916260145765,0.07759563415136603,0.07765004789355248,0.07769237387881946,0.07772259082000553,0.07774068603222975,0.07774665536381103,0.07774050311802853,0.0777222419659013,0.07769189285017906,0.07764948488075073,0.07759505522168658,0.07752864897014607,0.07745031902739112,0.07736012596215966,0.07725813786666162,0.07714443020547203,0.0770190856576047,0.0768821939520587,0.07673385169713925,0.07673385169713925,0.07657416220386129,0.07640323530375248,0.07622118716137843,0.07602814008191874,0.0758242223141279,0.07560956784902026,0.0753843162146214,0.07514861226713243,0.07490260597885508,0.07464645222322909,0.07438031055733316,0.07410434500220157,0.07381872382130963,0.07352361929757821,0.07321920750924764,0.07290566810496903,0.07258318407845683,0.07225194154304534,0.07191212950648436,0.07156393964630864,0.07120756608610598,0.07084320517300662,0.07047105525670701,0.0700913164703365,0.06970419051346542,0.06930988043754688,0.06890859043407457,0.06850052562573061,0.06808589186078641,0.0676648955110122,0.06723774327333726,0.06680464197549456,0.06636579838587112,0.06592141902777456,0.06547170999831428,0.06501687679208379,0.06455712412981868,0.06409265579219266,0.06362367445890052,0.06315038155316582,0.06267297709179674,0.06219165954090161,0.06170662567736353,0.061218070456158465,0.06072618688359086,0.06023116589650659,0.05973319624753085,0.059232464396365724,0.05872915440717064,0.058223447852035724,0.05771552372054678,0.05720555833542788,0.056693725274237654,0.05618019529708252,0.055665136280299454,0.05514871315605137,0.05463108785776645,0.05411241927134343,0.05359286319203563,0.05307257228691675,0.05255169606282311,0.05203038083965804,0.0515087697289375,0.050987002617447374,0.05046521615587574,0.04994354375227861,0.04942211557022931,0.04890105853149819,0.04838049632310218,0.04786054940856129,0.0473413350431936,0.046822967293276535,0.046305557058900396,0.045789212100336464,0.045274037067739366,0.04476013353400341,0.04424760003058952,0.04373653208614015,0.04322702226769755,0.04271916022434306,0.042213032733073946,0.04170872374673541,0.041206314443828246,0.04070588328001277,0.04020750604113229,0.039711255897582697,0.03921720345985655,0.03872541683509417,0.0382359616844767,0.037748901281301296,0.03726429656958191,0.03678220622302292,0.036302686704219204,0.03582579232393944,0.03535157530035539,0.034880085818084536,0.03441137208691972,0.0339454804001244,0.03348245519217727,0.033022339095857424,0.03256517299856565,0.03211099609778362,0.03165984595557978,0.0312117585520757,0.03076676833779314,0.030324908284808112,0.029886209936644724,0.029450703456847093,0.029018417676173407,0.028589380138363363,0.028163617144434876,0.027741153795471856,0.0273220140338716,0.026906220683024555,0.02649379548540582,0.02608475913906183,0.02567913133248245,0.025276930777852438,0.024878175242681124,0.024482881579815118,0.02409106575584193,0.023702742877897174,0.023317927218892833,0.022936632241187048],\n", "\"..quantile..\":[0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,0.75,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]\n", "}\n", "},{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"dotplot\",\n", "\"color\":\"#118ed8\",\n", "\"position\":\"identity\",\n", "\"binwidth\":1.5,\n", "\"geom\":\"dotplot\",\n", "\"fill\":\"white\",\n", "\"data\":{\n", "\"..binwidth..\":[1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5],\n", "\"..count..\":[1.0,1.0,5.0,5.0,2.0,6.0,8.0,3.0,1.0],\n", "\"hwy\":[12.0,14.0,16.5,18.5,20.5,24.5,26.5,29.0,31.0]\n", "}\n", "}]\n", "};\n", " var plotContainer = document.getElementById(\"X0pRIX\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "letsPlot(mpg32.toMap()) {x = \"hwy\"} +\n", " geomDensity(fill = PACIFIC_BLUE) + \n", " geomDotplot(binWidth = 1.5, fill = \"white\", color = PACIFIC_BLUE)\n", " " ] }, { "cell_type": "markdown", "id": "broad-single", "metadata": {}, "source": [ "### `geomDotplot()` and `geomHistogram()`" ] }, { "cell_type": "code", "execution_count": 8, "id": "international-passing", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"sHI0oY\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"bin\",\n", "\"color\":\"white\",\n", "\"position\":\"stack\",\n", "\"binwidth\":1.5,\n", "\"geom\":\"histogram\",\n", "\"data\":{\n", "\"..count..\":[1.0,0.0,1.0,1.0,6.0,3.0,2.0,0.0,3.0,3.0,8.0,0.0,3.0,1.0,0.0],\n", "\"hwy\":[11.7,13.2,14.7,16.2,17.7,19.2,20.7,22.2,23.7,25.2,26.7,28.2,29.7,31.2,32.7]\n", "}\n", "},{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"dotplot\",\n", "\"color\":\"#118ed8\",\n", "\"method\":\"histodot\",\n", "\"position\":\"identity\",\n", "\"binwidth\":1.5,\n", "\"geom\":\"dotplot\",\n", "\"fill\":\"white\",\n", "\"data\":{\n", "\"..binwidth..\":[1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5],\n", "\"..count..\":[1.0,0.0,1.0,1.0,6.0,3.0,2.0,0.0,3.0,3.0,8.0,0.0,3.0,1.0,0.0],\n", "\"hwy\":[11.7,13.2,14.7,16.2,17.7,19.2,20.7,22.2,23.7,25.2,26.7,28.2,29.7,31.2,32.7]\n", "}\n", "}]\n", "};\n", " var plotContainer = document.getElementById(\"sHI0oY\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "letsPlot(mpg32.toMap()) {x = \"hwy\"} +\n", " geomHistogram(binWidth = 1.5, color = \"white\") + \n", " geomDotplot(method = \"histodot\", binWidth = 1.5, fill = \"white\", color = PACIFIC_BLUE)\n" ] }, { "cell_type": "markdown", "id": "engaging-cycling", "metadata": {}, "source": [ "### Parameter `stackDir`" ] }, { "cell_type": "code", "execution_count": 9, "id": "psychological-kernel", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"ImtmlD\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"kind\":\"ggbunch\",\n", "\"items\":[{\n", "\"x\":0,\n", "\"width\":400,\n", "\"y\":0,\n", "\"feature_spec\":{\n", "\"ggtitle\":{\n", "\"text\":\"stackDir = \\\"up\\\"\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"stackdir\":\"up\",\n", "\"mapping\":{\n", "},\n", "\"stat\":\"dotplot\",\n", "\"position\":\"identity\",\n", "\"binwidth\":1.5,\n", "\"geom\":\"dotplot\",\n", "\"data\":{\n", "\"..binwidth..\":[1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5],\n", "\"..count..\":[1.0,1.0,5.0,5.0,2.0,6.0,8.0,3.0,1.0],\n", "\"hwy\":[12.0,14.0,16.5,18.5,20.5,24.5,26.5,29.0,31.0]\n", "}\n", "}]\n", "},\n", "\"height\":310\n", "},{\n", "\"x\":400,\n", "\"width\":400,\n", "\"y\":0,\n", "\"feature_spec\":{\n", "\"ggtitle\":{\n", "\"text\":\"stackDir = \\\"down\\\"\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"stackdir\":\"down\",\n", "\"mapping\":{\n", "},\n", "\"stat\":\"dotplot\",\n", "\"position\":\"identity\",\n", "\"binwidth\":1.5,\n", "\"geom\":\"dotplot\",\n", "\"data\":{\n", "\"..binwidth..\":[1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5],\n", "\"..count..\":[1.0,1.0,5.0,5.0,2.0,6.0,8.0,3.0,1.0],\n", "\"hwy\":[12.0,14.0,16.5,18.5,20.5,24.5,26.5,29.0,31.0]\n", "}\n", "}]\n", "},\n", "\"height\":310\n", "},{\n", "\"x\":0,\n", "\"width\":400,\n", "\"y\":360,\n", "\"feature_spec\":{\n", "\"ggtitle\":{\n", "\"text\":\"stackDir = \\\"center\\\"\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"stackdir\":\"center\",\n", "\"mapping\":{\n", "},\n", "\"stat\":\"dotplot\",\n", "\"position\":\"identity\",\n", "\"binwidth\":1.5,\n", "\"geom\":\"dotplot\",\n", "\"data\":{\n", "\"..binwidth..\":[1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5],\n", "\"..count..\":[1.0,1.0,5.0,5.0,2.0,6.0,8.0,3.0,1.0],\n", "\"hwy\":[12.0,14.0,16.5,18.5,20.5,24.5,26.5,29.0,31.0]\n", "}\n", "}]\n", "},\n", "\"height\":310\n", "},{\n", "\"x\":400,\n", "\"width\":400,\n", "\"y\":360,\n", "\"feature_spec\":{\n", "\"ggtitle\":{\n", "\"text\":\"stackDir = \\\"centerwhole\\\"\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"stackdir\":\"centerwhole\",\n", "\"mapping\":{\n", "},\n", "\"stat\":\"dotplot\",\n", "\"position\":\"identity\",\n", "\"binwidth\":1.5,\n", "\"geom\":\"dotplot\",\n", "\"data\":{\n", "\"..binwidth..\":[1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5],\n", "\"..count..\":[1.0,1.0,5.0,5.0,2.0,6.0,8.0,3.0,1.0],\n", "\"hwy\":[12.0,14.0,16.5,18.5,20.5,24.5,26.5,29.0,31.0]\n", "}\n", "}]\n", "},\n", "\"height\":310\n", "}]\n", "};\n", " var plotContainer = document.getElementById(\"ImtmlD\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val plotBase = letsPlot(mpg32.toMap()) {x = \"hwy\"}\n", "val plots = listOf(\n", " plotBase + geomDotplot(binWidth = 1.5, stackDir = \"up\") + ggtitle(\"stackDir = \\\"up\\\"\"),\n", " plotBase + geomDotplot(binWidth = 1.5, stackDir = \"down\") + ggtitle(\"stackDir = \\\"down\\\"\"),\n", " plotBase + geomDotplot(binWidth = 1.5, stackDir = \"center\") + ggtitle(\"stackDir = \\\"center\\\"\"),\n", " plotBase + geomDotplot(binWidth = 1.5, stackDir = \"centerwhole\") + ggtitle(\"stackDir = \\\"centerwhole\\\"\"),\n", ")\n", "\n", "gggrid(plots, 2, 400, 310, fit = true)" ] }, { "cell_type": "markdown", "id": "documented-guatemala", "metadata": {}, "source": [ "### Parameter `stackRatio`" ] }, { "cell_type": "code", "execution_count": 10, "id": "peaceful-sentence", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"hzo17A\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"kind\":\"ggbunch\",\n", "\"items\":[{\n", "\"x\":0,\n", "\"width\":400,\n", "\"y\":0,\n", "\"feature_spec\":{\n", "\"ggtitle\":{\n", "\"text\":\"stackRatio = 1\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"dotplot\",\n", "\"stackratio\":1.0,\n", "\"position\":\"identity\",\n", "\"binwidth\":1.5,\n", "\"geom\":\"dotplot\",\n", "\"data\":{\n", "\"..binwidth..\":[1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5],\n", "\"..count..\":[1.0,1.0,5.0,5.0,2.0,6.0,8.0,3.0,1.0],\n", "\"hwy\":[12.0,14.0,16.5,18.5,20.5,24.5,26.5,29.0,31.0]\n", "}\n", "}]\n", "},\n", "\"height\":310\n", "},{\n", "\"x\":400,\n", "\"width\":400,\n", "\"y\":0,\n", "\"feature_spec\":{\n", "\"ggtitle\":{\n", "\"text\":\"stackRatio = 0.5\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"dotplot\",\n", "\"stackratio\":0.5,\n", "\"position\":\"identity\",\n", "\"binwidth\":1.5,\n", "\"geom\":\"dotplot\",\n", "\"data\":{\n", "\"..binwidth..\":[1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5],\n", "\"..count..\":[1.0,1.0,5.0,5.0,2.0,6.0,8.0,3.0,1.0],\n", "\"hwy\":[12.0,14.0,16.5,18.5,20.5,24.5,26.5,29.0,31.0]\n", "}\n", "}]\n", "},\n", "\"height\":310\n", "},{\n", "\"x\":0,\n", "\"width\":400,\n", "\"y\":360,\n", "\"feature_spec\":{\n", "\"ggtitle\":{\n", "\"text\":\"stackRatio = 1.5\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"dotplot\",\n", "\"stackratio\":1.5,\n", "\"position\":\"identity\",\n", "\"binwidth\":1.5,\n", "\"geom\":\"dotplot\",\n", "\"data\":{\n", "\"..binwidth..\":[1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5],\n", "\"..count..\":[1.0,1.0,5.0,5.0,2.0,6.0,8.0,3.0,1.0],\n", "\"hwy\":[12.0,14.0,16.5,18.5,20.5,24.5,26.5,29.0,31.0]\n", "}\n", "}]\n", "},\n", "\"height\":310\n", "}]\n", "};\n", " var plotContainer = document.getElementById(\"hzo17A\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val plots1 = listOf(\n", " plotBase + geomDotplot(binWidth = 1.5, stackRatio = 1) + ggtitle(\"stackRatio = 1\"),\n", " plotBase + geomDotplot(binWidth = 1.5, stackRatio = 0.5) + ggtitle(\"stackRatio = 0.5\"),\n", " plotBase + geomDotplot(binWidth = 1.5, stackRatio = 1.5) + ggtitle(\"stackRatio = 1.5\"),\n", ")\n", "\n", "gggrid(plots1, 2, 400, 310, fit = true)" ] }, { "cell_type": "markdown", "id": "refined-queensland", "metadata": {}, "source": [ "### Parameter `dotSize`" ] }, { "cell_type": "code", "execution_count": 11, "id": "geographic-delivery", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"WFVg0A\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"kind\":\"ggbunch\",\n", "\"items\":[{\n", "\"x\":0,\n", "\"width\":400,\n", "\"y\":0,\n", "\"feature_spec\":{\n", "\"ggtitle\":{\n", "\"text\":\"dotSize = 1\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"dotplot\",\n", "\"position\":\"identity\",\n", "\"binwidth\":1.5,\n", "\"dotsize\":1.0,\n", "\"geom\":\"dotplot\",\n", "\"data\":{\n", "\"..binwidth..\":[1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5],\n", "\"..count..\":[1.0,1.0,5.0,5.0,2.0,6.0,8.0,3.0,1.0],\n", "\"hwy\":[12.0,14.0,16.5,18.5,20.5,24.5,26.5,29.0,31.0]\n", "}\n", "}]\n", "},\n", "\"height\":310\n", "},{\n", "\"x\":400,\n", "\"width\":400,\n", "\"y\":0,\n", "\"feature_spec\":{\n", "\"ggtitle\":{\n", "\"text\":\"dotSize = 0.5\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"dotplot\",\n", "\"position\":\"identity\",\n", "\"binwidth\":1.5,\n", "\"dotsize\":0.5,\n", "\"geom\":\"dotplot\",\n", "\"data\":{\n", "\"..binwidth..\":[1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5],\n", "\"..count..\":[1.0,1.0,5.0,5.0,2.0,6.0,8.0,3.0,1.0],\n", "\"hwy\":[12.0,14.0,16.5,18.5,20.5,24.5,26.5,29.0,31.0]\n", "}\n", "}]\n", "},\n", "\"height\":310\n", "},{\n", "\"x\":0,\n", "\"width\":400,\n", "\"y\":360,\n", "\"feature_spec\":{\n", "\"ggtitle\":{\n", "\"text\":\"dotSize = 1.5\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"dotplot\",\n", "\"position\":\"identity\",\n", "\"binwidth\":1.5,\n", "\"dotsize\":1.5,\n", "\"geom\":\"dotplot\",\n", "\"data\":{\n", "\"..binwidth..\":[1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5],\n", "\"..count..\":[1.0,1.0,5.0,5.0,2.0,6.0,8.0,3.0,1.0],\n", "\"hwy\":[12.0,14.0,16.5,18.5,20.5,24.5,26.5,29.0,31.0]\n", "}\n", "}]\n", "},\n", "\"height\":310\n", "}]\n", "};\n", " var plotContainer = document.getElementById(\"WFVg0A\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val plots2 = listOf(\n", " plotBase + geomDotplot(binWidth = 1.5, dotSize = 1) + ggtitle(\"dotSize = 1\"),\n", " plotBase + geomDotplot(binWidth = 1.5, dotSize = 0.5) + ggtitle(\"dotSize = 0.5\"),\n", " plotBase + geomDotplot(binWidth = 1.5, dotSize = 1.5) + ggtitle(\"dotSize = 1.5\"),\n", ")\n", "\n", "gggrid(plots2, 2, 400, 310, fit = true)" ] }, { "cell_type": "markdown", "id": "laughing-occupation", "metadata": {}, "source": [ "### Parameter `center`" ] }, { "cell_type": "code", "execution_count": 12, "id": "resident-carpet", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"DrKsCh\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"kind\":\"ggbunch\",\n", "\"items\":[{\n", "\"x\":0,\n", "\"width\":400,\n", "\"y\":0,\n", "\"feature_spec\":{\n", "\"ggtitle\":{\n", "\"text\":\"Default\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"dotplot\",\n", "\"method\":\"histodot\",\n", "\"position\":\"identity\",\n", "\"binwidth\":1.5,\n", "\"geom\":\"dotplot\",\n", "\"data\":{\n", "\"..binwidth..\":[1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5],\n", "\"..count..\":[1.0,0.0,1.0,1.0,6.0,3.0,2.0,0.0,3.0,3.0,8.0,0.0,3.0,1.0,0.0],\n", "\"hwy\":[11.7,13.2,14.7,16.2,17.7,19.2,20.7,22.2,23.7,25.2,26.7,28.2,29.7,31.2,32.7]\n", "}\n", "}]\n", "},\n", "\"height\":310\n", "},{\n", "\"x\":400,\n", "\"width\":400,\n", "\"y\":0,\n", "\"feature_spec\":{\n", "\"ggtitle\":{\n", "\"text\":\"center = 11\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"dotplot\",\n", "\"method\":\"histodot\",\n", "\"center\":11.0,\n", "\"position\":\"identity\",\n", "\"binwidth\":1.5,\n", "\"geom\":\"dotplot\",\n", "\"data\":{\n", "\"..binwidth..\":[1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5],\n", "\"..count..\":[0.0,1.0,1.0,1.0,4.0,5.0,1.0,1.0,0.0,6.0,5.0,3.0,3.0,1.0,0.0],\n", "\"hwy\":[11.0,12.5,14.0,15.5,17.0,18.5,20.0,21.5,23.0,24.5,26.0,27.5,29.0,30.5,32.0]\n", "}\n", "}]\n", "},\n", "\"height\":310\n", "}]\n", "};\n", " var plotContainer = document.getElementById(\"DrKsCh\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val plots3 = listOf(\n", " plotBase + geomDotplot(binWidth = 1.5, method = \"histodot\") + ggtitle(\"Default\"),\n", " plotBase + geomDotplot(binWidth = 1.5, method = \"histodot\", center = 11) + ggtitle(\"center = 11\"),\n", ")\n", "\n", "gggrid(plots3, 2, 400, 310, fit = true)" ] }, { "cell_type": "markdown", "id": "agricultural-roots", "metadata": {}, "source": [ "### Parameter `boundary`" ] }, { "cell_type": "code", "execution_count": 13, "id": "compliant-transcription", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"d7G5yN\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"kind\":\"ggbunch\",\n", "\"items\":[{\n", "\"x\":0,\n", "\"width\":400,\n", "\"y\":0,\n", "\"feature_spec\":{\n", "\"ggtitle\":{\n", "\"text\":\"Default\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"dotplot\",\n", "\"method\":\"histodot\",\n", "\"position\":\"identity\",\n", "\"binwidth\":1.5,\n", "\"geom\":\"dotplot\",\n", "\"data\":{\n", "\"..binwidth..\":[1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5],\n", "\"..count..\":[1.0,0.0,1.0,1.0,6.0,3.0,2.0,0.0,3.0,3.0,8.0,0.0,3.0,1.0,0.0],\n", "\"hwy\":[11.7,13.2,14.7,16.2,17.7,19.2,20.7,22.2,23.7,25.2,26.7,28.2,29.7,31.2,32.7]\n", "}\n", "}]\n", "},\n", "\"height\":310\n", "},{\n", "\"x\":400,\n", "\"width\":400,\n", "\"y\":0,\n", "\"feature_spec\":{\n", "\"ggtitle\":{\n", "\"text\":\"boundary = 12\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"boundary\":12.0,\n", "\"mapping\":{\n", "},\n", "\"stat\":\"dotplot\",\n", "\"method\":\"histodot\",\n", "\"position\":\"identity\",\n", "\"binwidth\":1.5,\n", "\"geom\":\"dotplot\",\n", "\"data\":{\n", "\"..binwidth..\":[1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5],\n", "\"..count..\":[0.0,1.0,1.0,1.0,4.0,5.0,1.0,1.0,0.0,6.0,5.0,3.0,3.0,1.0,0.0],\n", "\"hwy\":[11.25,12.75,14.25,15.75,17.25,18.75,20.25,21.75,23.25,24.75,26.25,27.75,29.25,30.75,32.25]\n", "}\n", "}]\n", "},\n", "\"height\":310\n", "}]\n", "};\n", " var plotContainer = document.getElementById(\"d7G5yN\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val plots4 = listOf(\n", " plotBase + geomDotplot(binWidth = 1.5, method = \"histodot\") + ggtitle(\"Default\"),\n", " plotBase + geomDotplot(binWidth = 1.5, method = \"histodot\", boundary = 12) + ggtitle(\"boundary = 12\"),\n", ")\n", "\n", "gggrid(plots4, 2, 400, 310, fit = true)" ] }, { "cell_type": "markdown", "id": "downtown-rebate", "metadata": {}, "source": [ "### Parameter `bins`" ] }, { "cell_type": "code", "execution_count": 14, "id": "scenic-treasure", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"lsINIX\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"kind\":\"ggbunch\",\n", "\"items\":[{\n", "\"x\":0,\n", "\"width\":400,\n", "\"y\":0,\n", "\"feature_spec\":{\n", "\"ggtitle\":{\n", "\"text\":\"Default (30)\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"dotplot\",\n", "\"method\":\"histodot\",\n", "\"position\":\"identity\",\n", "\"geom\":\"dotplot\",\n", "\"data\":{\n", "\"..binwidth..\":[0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889,0.6628888888888889],\n", "\"..count..\":[1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,4.0,2.0,0.0,3.0,1.0,0.0,1.0,0.0,0.0,0.0,3.0,0.0,3.0,5.0,0.0,3.0,0.0,0.0,3.0,0.0,0.0,1.0],\n", "\"hwy\":[11.888111111111112,12.551,13.213888888888889,13.876777777777779,14.539666666666667,15.202555555555556,15.865444444444446,16.528333333333336,17.191222222222223,17.85411111111111,18.517,19.17988888888889,19.842777777777776,20.505666666666666,21.168555555555557,21.831444444444443,22.494333333333334,23.157222222222224,23.82011111111111,24.483,25.14588888888889,25.808777777777777,26.471666666666668,27.134555555555558,27.797444444444444,28.460333333333335,29.12322222222222,29.78611111111111,30.449,31.11188888888889]\n", "}\n", "}]\n", "},\n", "\"height\":310\n", "},{\n", "\"x\":400,\n", "\"width\":400,\n", "\"y\":0,\n", "\"feature_spec\":{\n", "\"ggtitle\":{\n", "\"text\":\"bins = 15\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"dotplot\",\n", "\"bins\":15.0,\n", "\"method\":\"histodot\",\n", "\"position\":\"identity\",\n", "\"geom\":\"dotplot\",\n", "\"data\":{\n", "\"..binwidth..\":[1.3848888888888888,1.3848888888888888,1.3848888888888888,1.3848888888888888,1.3848888888888888,1.3848888888888888,1.3848888888888888,1.3848888888888888,1.3848888888888888,1.3848888888888888,1.3848888888888888,1.3848888888888888,1.3848888888888888,1.3848888888888888,1.3848888888888888],\n", "\"..count..\":[1.0,0.0,1.0,1.0,6.0,3.0,1.0,1.0,0.0,3.0,8.0,3.0,3.0,0.0,1.0],\n", "\"hwy\":[11.805777777777777,13.190666666666665,14.575555555555555,15.960444444444445,17.345333333333333,18.73022222222222,20.115111111111112,21.5,22.884888888888888,24.269777777777776,25.654666666666664,27.039555555555555,28.424444444444443,29.80933333333333,31.194222222222223]\n", "}\n", "}]\n", "},\n", "\"height\":310\n", "}]\n", "};\n", " var plotContainer = document.getElementById(\"lsINIX\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val plots5 = listOf(\n", " plotBase + geomDotplot(method = \"histodot\") + ggtitle(\"Default (30)\"),\n", " plotBase + geomDotplot(method = \"histodot\", bins = 15) + ggtitle(\"bins = 15\"),\n", ")\n", "\n", "gggrid(plots5, 2, 400, 310, fit = true)" ] }, { "cell_type": "markdown", "id": "banner-assault", "metadata": {}, "source": [ "### Grouping" ] }, { "cell_type": "code", "execution_count": 15, "id": "streaming-promotion", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"GvRHjx\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"ggtitle\":{\n", "\"text\":\"method='dotdensity'\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "\"fill\":\"@as_discrete@cyl\"\n", "},\n", "\"stat\":\"dotplot\",\n", "\"color\":\"black\",\n", "\"position\":\"identity\",\n", "\"binwidth\":2.0,\n", "\"geom\":\"dotplot\",\n", "\"data_meta\":{\n", "\"mapping_annotations\":[{\n", "\"aes\":\"fill\",\n", "\"annotation\":\"as_discrete\",\n", "\"parameters\":{\n", "\"label\":\"cyl\"\n", "}\n", "}]\n", "},\n", "\"data\":{\n", "\"@as_discrete@cyl\":[6.0,6.0,6.0,6.0,5.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,4.0,4.0,4.0,4.0,4.0],\n", "\"..binwidth..\":[2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0],\n", "\"..count..\":[3.0,1.0,3.0,3.0,1.0,1.0,1.0,3.0,3.0,1.0,1.0,1.0,1.0,3.0,3.0,2.0,1.0],\n", "\"hwy\":[17.5,19.0,24.5,26.0,29.0,12.0,14.0,16.5,18.5,21.0,24.0,26.0,20.0,25.5,27.0,29.0,31.0]\n", "}\n", "}]\n", "};\n", " var plotContainer = document.getElementById(\"GvRHjx\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plotBase +\n", " geomDotplot(binWidth = 2, color=\"black\") {fill = asDiscrete(\"cyl\")} +\n", " ggtitle(\"method='dotdensity'\")" ] }, { "cell_type": "code", "execution_count": 16, "id": "quick-discretion", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"condzV\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"kind\":\"ggbunch\",\n", "\"items\":[{\n", "\"x\":0,\n", "\"width\":400,\n", "\"y\":0,\n", "\"feature_spec\":{\n", "\"ggtitle\":{\n", "\"text\":\"method='histodot'\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "\"fill\":\"@as_discrete@cyl\"\n", "},\n", "\"stat\":\"dotplot\",\n", "\"color\":\"black\",\n", "\"method\":\"histodot\",\n", "\"position\":\"identity\",\n", "\"binwidth\":2.0,\n", "\"geom\":\"dotplot\",\n", "\"data_meta\":{\n", "\"mapping_annotations\":[{\n", "\"aes\":\"fill\",\n", "\"annotation\":\"as_discrete\",\n", "\"parameters\":{\n", "\"label\":\"cyl\"\n", "}\n", "}]\n", "},\n", "\"data\":{\n", "\"@as_discrete@cyl\":[6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0],\n", "\"..binwidth..\":[2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0],\n", "\"..count..\":[0.0,0.0,0.0,3.0,1.0,0.0,2.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,3.0,2.0,1.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,3.0,3.0,2.0,1.0],\n", "\"hwy\":[11.6,13.6,15.6,17.6,19.6,21.6,23.6,25.6,27.6,29.6,31.6,11.6,13.6,15.6,17.6,19.6,21.6,23.6,25.6,27.6,29.6,31.6,11.6,13.6,15.6,17.6,19.6,21.6,23.6,25.6,27.6,29.6,31.6,11.6,13.6,15.6,17.6,19.6,21.6,23.6,25.6,27.6,29.6,31.6]\n", "}\n", "}]\n", "},\n", "\"height\":310\n", "},{\n", "\"x\":400,\n", "\"width\":400,\n", "\"y\":0,\n", "\"feature_spec\":{\n", "\"ggtitle\":{\n", "\"text\":\"method='histodot', stackGroups = true\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "\"fill\":\"@as_discrete@cyl\"\n", "},\n", "\"stat\":\"dotplot\",\n", "\"stackgroups\":true,\n", "\"color\":\"black\",\n", "\"method\":\"histodot\",\n", "\"position\":\"identity\",\n", "\"binwidth\":2.0,\n", "\"geom\":\"dotplot\",\n", "\"data_meta\":{\n", "\"mapping_annotations\":[{\n", "\"aes\":\"fill\",\n", "\"annotation\":\"as_discrete\",\n", "\"parameters\":{\n", "\"label\":\"cyl\"\n", "}\n", "}]\n", "},\n", "\"data\":{\n", "\"@as_discrete@cyl\":[6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,6.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0],\n", "\"..binwidth..\":[2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0],\n", "\"..count..\":[0.0,0.0,0.0,3.0,1.0,0.0,2.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,1.0,1.0,3.0,2.0,1.0,1.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,3.0,3.0,2.0,1.0],\n", "\"hwy\":[11.6,13.6,15.6,17.6,19.6,21.6,23.6,25.6,27.6,29.6,31.6,11.6,13.6,15.6,17.6,19.6,21.6,23.6,25.6,27.6,29.6,31.6,11.6,13.6,15.6,17.6,19.6,21.6,23.6,25.6,27.6,29.6,31.6,11.6,13.6,15.6,17.6,19.6,21.6,23.6,25.6,27.6,29.6,31.6]\n", "}\n", "}]\n", "},\n", "\"height\":310\n", "}]\n", "};\n", " var plotContainer = document.getElementById(\"condzV\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val plots6 = listOf(\n", " plotBase + geomDotplot(method = \"histodot\", binWidth = 2, color = \"black\") {\n", " fill = asDiscrete(\"cyl\")\n", " } + ggtitle(\"method='histodot'\"),\n", " plotBase + geomDotplot(method = \"histodot\", stackGroups = true, binWidth = 2, color = \"black\") {\n", " fill = asDiscrete(\"cyl\")\n", " } + ggtitle(\"method='histodot', stackGroups = true\"),\n", ")\n", "\n", "gggrid(plots6, 2, 400, 310, fit = true)" ] }, { "cell_type": "markdown", "id": "rural-manchester", "metadata": {}, "source": [ "### Tooltips" ] }, { "cell_type": "code", "execution_count": 17, "id": "standing-gender", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"SPVKbL\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"dotplot\",\n", "\"bins\":15.0,\n", "\"position\":\"identity\",\n", "\"geom\":\"dotplot\",\n", "\"tooltips\":{\n", "\"lines\":[\"stack center|^x\",\"Number of dots in stack|@..count..\",\"Dot diameter|@..binwidth..\"]\n", "},\n", "\"data\":{\n", "\"..binwidth..\":[1.2666666666666666,1.2666666666666666,1.2666666666666666,1.2666666666666666,1.2666666666666666,1.2666666666666666,1.2666666666666666,1.2666666666666666,1.2666666666666666],\n", "\"..count..\":[1.0,1.0,5.0,5.0,2.0,6.0,8.0,3.0,1.0],\n", "\"hwy\":[12.0,14.0,16.5,18.5,20.5,24.5,26.5,29.0,31.0]\n", "}\n", "}]\n", "};\n", " var plotContainer = document.getElementById(\"SPVKbL\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "letsPlot(mpg32.toMap()) {x = \"hwy\"} + \n", " geomDotplot(tooltips = layerTooltips()\n", " .line(\"stack center|^x\")\n", " .line(\"Number of dots in stack|@..count..\")\n", " .line(\"Dot diameter|@..binwidth..\"),\n", " bins = 15)" ] }, { "cell_type": "markdown", "id": "least-sodium", "metadata": {}, "source": [ "### Facets" ] }, { "cell_type": "code", "execution_count": 18, "id": "healthy-master", "metadata": {}, "outputs": [], "source": [ "val plotBase2 = plotBase + \n", " scaleColorBrewer(type=\"qual\", palette=\"Set1\") + \n", " scaleFillBrewer(type=\"qual\", palette=\"Set1\") +\n", " themeGrey()" ] }, { "cell_type": "code", "execution_count": 19, "id": "magnetic-keeping", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"HJRYjU\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"ggtitle\":{\n", "\"text\":\"facetGrid\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[{\n", "\"aesthetic\":\"color\",\n", "\"scale_mapper_kind\":\"color_brewer\",\n", "\"palette\":\"Set1\",\n", "\"type\":\"qual\"\n", "},{\n", "\"aesthetic\":\"fill\",\n", "\"scale_mapper_kind\":\"color_brewer\",\n", "\"palette\":\"Set1\",\n", "\"type\":\"qual\"\n", "}],\n", "\"layers\":[{\n", "\"mapping\":{\n", "\"color\":\"@as_discrete@cyl\",\n", "\"fill\":\"@as_discrete@cyl\"\n", "},\n", "\"stat\":\"dotplot\",\n", "\"position\":\"identity\",\n", "\"binwidth\":2.0,\n", "\"geom\":\"dotplot\",\n", "\"data_meta\":{\n", "\"mapping_annotations\":[{\n", "\"aes\":\"color\",\n", "\"annotation\":\"as_discrete\",\n", "\"parameters\":{\n", "\"label\":\"cyl\"\n", "}\n", "},{\n", "\"aes\":\"fill\",\n", "\"annotation\":\"as_discrete\",\n", "\"parameters\":{\n", "\"label\":\"cyl\"\n", "}\n", "}],\n", "\"series_annotations\":[{\n", "\"column\":\"cyl\",\n", "\"factor_levels\":[6.0,5.0,8.0,4.0]\n", "}]\n", "},\n", "\"data\":{\n", "\"@as_discrete@cyl\":[4.0,4.0,4.0,4.0,4.0,5.0,6.0,6.0,6.0,6.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0],\n", "\"..binwidth..\":[2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0],\n", "\"..count..\":[1.0,3.0,3.0,2.0,1.0,1.0,3.0,1.0,3.0,3.0,1.0,1.0,3.0,3.0,1.0,1.0,1.0],\n", "\"cyl\":[4.0,4.0,4.0,4.0,4.0,5.0,6.0,6.0,6.0,6.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0],\n", "\"hwy\":[20.0,25.5,27.0,29.0,31.0,29.0,17.5,19.0,24.5,26.0,12.0,14.0,16.5,18.5,21.0,24.0,26.0]\n", "}\n", "}],\n", "\"theme\":{\n", "\"name\":\"grey\"\n", "},\n", "\"facet\":{\n", "\"name\":\"grid\",\n", "\"x\":\"cyl\",\n", "\"x_order\":1.0,\n", "\"y_order\":1.0\n", "}\n", "};\n", " var plotContainer = document.getElementById(\"HJRYjU\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plotBase2 + geomDotplot(binWidth = 2) {\n", " color = asDiscrete(\"cyl\")\n", " fill = asDiscrete(\"cyl\")\n", " } + facetGrid(x = \"cyl\") + ggtitle(\"facetGrid\")\n" ] }, { "cell_type": "markdown", "id": "defensive-sight", "metadata": {}, "source": [ "### `coord_flip()`" ] }, { "cell_type": "code", "execution_count": 20, "id": "straight-acrylic", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"om8nc2\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"mapping\":{\n", "\"x\":\"hwy\"\n", "},\n", "\"coord\":{\n", "\"name\":\"flip\",\n", "\"flip\":true\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"dotplot\",\n", "\"position\":\"identity\",\n", "\"geom\":\"dotplot\",\n", "\"data\":{\n", "\"..binwidth..\":[0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333,0.6333333333333333],\n", "\"..count..\":[1.0,1.0,1.0,4.0,2.0,3.0,1.0,1.0,3.0,3.0,5.0,3.0,3.0,1.0],\n", "\"hwy\":[12.0,14.0,16.0,17.0,18.0,19.0,20.0,21.0,24.0,25.0,26.0,27.0,29.0,31.0]\n", "}\n", "}]\n", "};\n", " var plotContainer = document.getElementById(\"om8nc2\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "letsPlot(mpg32.toMap()) {x = \"hwy\"} +\n", " geomDotplot() + coordFlip()" ] }, { "cell_type": "markdown", "id": "happy-isolation", "metadata": {}, "source": [ "### \"identity\" statistic" ] }, { "cell_type": "code", "execution_count": 21, "id": "french-mount", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Line_47.jupyter.kts (7:30 - 34) Cannot find a parameter with this name: stat" ] } ], "source": [ "val data = mapOf(\n", " \"x\" to listOf(0.5, 1.5, 2.5, null),\n", " \"count\" to listOf(0, 3, null, 0),\n", " \"binwidth\" to listOf(.5, .5, .5, .5),\n", ")\n", "\n", "letsPlot(data) + geomDotplot(stat = Stat.identity) {\n", " x = \"x\"\n", " stackSize = \"count\"\n", " binWidth = \"binwidth\"\n", "} + ggtitle(\"stat = Stat.identity\")" ] }, { "cell_type": "markdown", "id": "purple-buffer", "metadata": {}, "source": [ "### Dotplot" ] }, { "cell_type": "code", "execution_count": 22, "id": "collect-prague", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Line_48.jupyter.kts (9:21 - 25) Cannot find a parameter with this name: size" ] } ], "source": [ "letsPlot(mpg32.toMap()) {x = \"hwy\"} +\n", " geomDotplot(\n", " method = \"histodot\",\n", " bins = 9, \n", " stackDir = \"center\",\n", " stackRatio = 0.8, \n", " dotSize = 0.8,\n", " color = \"black\", \n", " alpha = .5, size = 1\n", " ) {\n", " fill = asDiscrete(\"cyl\")\n", " } + \n", " scaleFillBrewer(palette = \"Set1\") +\n", " themeGrey()" ] } ], "metadata": { "kernelspec": { "display_name": "Kotlin", "language": "kotlin", "name": "kotlin" }, "language_info": { "codemirror_mode": "text/x-kotlin", "file_extension": ".kt", "mimetype": "text/x-kotlin", "name": "kotlin", "nbconvert_exporter": "", "pygments_lexer": "kotlin", "version": "1.8.20" } }, "nbformat": 4, "nbformat_minor": 5 }