{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "fiscal-holly", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"EcQeXG\"></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@v2.5.1/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(\"EcQeXG\").appendChild(div);\n", " };\n", " var e = document.getElementById(\"EcQeXG\");\n", " e.appendChild(script);\n", " })();\n", " </script>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%useLatestDescriptors\n", "%use lets-plot\n", "//%use krangl" ] }, { "cell_type": "code", "execution_count": 2, "id": "worthy-cedar", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Lets-Plot Kotlin API v.4.1.1. Frontend: Notebook with dynamically loaded JS. Lets-Plot JS v.2.5.1." ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "LetsPlot.getInfo() // Work around Krangl loading old Lets-Plot classes." ] }, { "cell_type": "code", "execution_count": 3, "id": "received-tablet", "metadata": {}, "outputs": [], "source": [ "%use krangl" ] }, { "cell_type": "code", "execution_count": 4, "id": "weird-republican", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<html><body><table><tr><th style=\"text-align:left\"></th><th style=\"text-align:left\">manufacturer</th><th style=\"text-align:left\">model</th><th style=\"text-align:left\">displ</th><th style=\"text-align:left\">year</th><th style=\"text-align:left\">cyl</th><th style=\"text-align:left\">trans</th><th style=\"text-align:left\">drv</th><th style=\"text-align:left\">cty</th><th style=\"text-align:left\">hwy</th><th style=\"text-align:left\">fl</th><th style=\"text-align:left\">class</th></tr><tr><td style=\"text-align:left\" title=\"1\">1</td><td style=\"text-align:left\" title=\"audi\">audi</td><td style=\"text-align:left\" title=\"a4\">a4</td><td style=\"text-align:left\" title=\"1.8\">1.8</td><td style=\"text-align:left\" title=\"1999\">1999</td><td style=\"text-align:left\" title=\"4\">4</td><td style=\"text-align:left\" title=\"auto(l5)\">auto(l5)</td><td style=\"text-align:left\" title=\"f\">f</td><td style=\"text-align:left\" title=\"18\">18</td><td style=\"text-align:left\" title=\"29\">29</td><td style=\"text-align:left\" title=\"p\">p</td><td style=\"text-align:left\" title=\"compact\">compact</td></tr><tr><td style=\"text-align:left\" title=\"2\">2</td><td style=\"text-align:left\" title=\"audi\">audi</td><td style=\"text-align:left\" title=\"a4\">a4</td><td style=\"text-align:left\" title=\"1.8\">1.8</td><td style=\"text-align:left\" title=\"1999\">1999</td><td style=\"text-align:left\" title=\"4\">4</td><td style=\"text-align:left\" title=\"manual(m5)\">manual(m5)</td><td style=\"text-align:left\" title=\"f\">f</td><td style=\"text-align:left\" title=\"21\">21</td><td style=\"text-align:left\" title=\"29\">29</td><td style=\"text-align:left\" title=\"p\">p</td><td style=\"text-align:left\" title=\"compact\">compact</td></tr><tr><td style=\"text-align:left\" title=\"3\">3</td><td style=\"text-align:left\" title=\"audi\">audi</td><td style=\"text-align:left\" title=\"a4\">a4</td><td style=\"text-align:left\" title=\"2.0\">2.0</td><td style=\"text-align:left\" title=\"2008\">2008</td><td style=\"text-align:left\" title=\"4\">4</td><td style=\"text-align:left\" title=\"manual(m6)\">manual(m6)</td><td style=\"text-align:left\" title=\"f\">f</td><td style=\"text-align:left\" title=\"20\">20</td><td style=\"text-align:left\" title=\"31\">31</td><td style=\"text-align:left\" title=\"p\">p</td><td style=\"text-align:left\" title=\"compact\">compact</td></tr></table><p>Shape: 3 x 12. \n", "</p></body></html>" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val df = DataFrame.readCSV(\"https://raw.githubusercontent.com/JetBrains/lets-plot-kotlin/master/docs/examples/data/mpg.csv\")\n", "df.head(3)\n" ] }, { "cell_type": "code", "execution_count": 5, "id": "accepted-afternoon", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"kto5tG\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"ggtitle\":{\n", "\"text\":\"Fuel efficiency\\nfor most popular models of car\",\n", "\"subtitle\":\"Period 1999-2008\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"displ\",\n", "\"y\":\"hwy\"\n", "},\n", "\"data\":{\n", "\"displ\":[1.8,1.8,2.0,2.0,2.8,2.8,3.1,1.8,1.8,2.0,2.0,2.8,2.8,3.1,3.1,2.8,3.1,4.2,5.3,5.3,5.3,5.7,6.0,5.7,5.7,6.2,6.2,7.0,5.3,5.3,5.7,6.5,2.4,2.4,3.1,3.5,3.6,2.4,3.0,3.3,3.3,3.3,3.3,3.3,3.8,3.8,3.8,4.0,3.7,3.7,3.9,3.9,4.7,4.7,4.7,5.2,5.2,3.9,4.7,4.7,4.7,5.2,5.7,5.9,4.7,4.7,4.7,4.7,4.7,4.7,5.2,5.2,5.7,5.9,4.6,5.4,5.4,4.0,4.0,4.0,4.0,4.6,5.0,4.2,4.2,4.6,4.6,4.6,5.4,5.4,3.8,3.8,4.0,4.0,4.6,4.6,4.6,4.6,5.4,1.6,1.6,1.6,1.6,1.6,1.8,1.8,1.8,2.0,2.4,2.4,2.4,2.4,2.5,2.5,3.3,2.0,2.0,2.0,2.0,2.7,2.7,2.7,3.0,3.7,4.0,4.7,4.7,4.7,5.7,6.1,4.0,4.2,4.4,4.6,5.4,5.4,5.4,4.0,4.0,4.6,5.0,2.4,2.4,2.5,2.5,3.5,3.5,3.0,3.0,3.5,3.3,3.3,4.0,5.6,3.1,3.8,3.8,3.8,5.3,2.5,2.5,2.5,2.5,2.5,2.5,2.2,2.2,2.5,2.5,2.5,2.5,2.5,2.5,2.7,2.7,3.4,3.4,4.0,4.7,2.2,2.2,2.4,2.4,3.0,3.0,3.5,2.2,2.2,2.4,2.4,3.0,3.0,3.3,1.8,1.8,1.8,1.8,1.8,4.7,5.7,2.7,2.7,2.7,3.4,3.4,4.0,4.0,2.0,2.0,2.0,2.0,2.8,1.9,2.0,2.0,2.0,2.0,2.5,2.5,2.8,2.8,1.9,1.9,2.0,2.0,2.5,2.5,1.8,1.8,2.0,2.0,2.8,2.8,3.6],\n", "\"hwy\":[29.0,29.0,31.0,30.0,26.0,26.0,27.0,26.0,25.0,28.0,27.0,25.0,25.0,25.0,25.0,24.0,25.0,23.0,20.0,15.0,20.0,17.0,17.0,26.0,23.0,26.0,25.0,24.0,19.0,14.0,15.0,17.0,27.0,30.0,26.0,29.0,26.0,24.0,24.0,22.0,22.0,24.0,24.0,17.0,22.0,21.0,23.0,23.0,19.0,18.0,17.0,17.0,19.0,19.0,12.0,17.0,15.0,17.0,17.0,12.0,17.0,16.0,18.0,15.0,16.0,12.0,17.0,17.0,16.0,12.0,15.0,16.0,17.0,15.0,17.0,17.0,18.0,17.0,19.0,17.0,19.0,19.0,17.0,17.0,17.0,16.0,16.0,17.0,15.0,17.0,26.0,25.0,26.0,24.0,21.0,22.0,23.0,22.0,20.0,33.0,32.0,32.0,29.0,32.0,34.0,36.0,36.0,29.0,26.0,27.0,30.0,31.0,26.0,26.0,28.0,26.0,29.0,28.0,27.0,24.0,24.0,24.0,22.0,19.0,20.0,17.0,12.0,19.0,18.0,14.0,15.0,18.0,18.0,15.0,17.0,16.0,18.0,17.0,19.0,19.0,17.0,29.0,27.0,31.0,32.0,27.0,26.0,26.0,25.0,25.0,17.0,17.0,20.0,18.0,26.0,26.0,27.0,28.0,25.0,25.0,24.0,27.0,25.0,26.0,23.0,26.0,26.0,26.0,26.0,25.0,27.0,25.0,27.0,20.0,20.0,19.0,17.0,20.0,17.0,29.0,27.0,31.0,31.0,26.0,26.0,28.0,27.0,29.0,31.0,31.0,26.0,26.0,27.0,30.0,33.0,35.0,37.0,35.0,15.0,18.0,20.0,20.0,22.0,17.0,19.0,18.0,20.0,29.0,26.0,29.0,29.0,24.0,44.0,29.0,26.0,29.0,29.0,29.0,29.0,23.0,24.0,44.0,41.0,29.0,26.0,28.0,29.0,29.0,29.0,28.0,29.0,26.0,26.0,26.0]\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[{\n", "\"aesthetic\":\"x\",\n", "\"name\":\"Engine displacement\\n(litres)\"\n", "},{\n", "\"aesthetic\":\"y\",\n", "\"name\":\"Highway\\nmiles per gallon\"\n", "}],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"identity\",\n", "\"position\":\"identity\",\n", "\"geom\":\"point\",\n", "\"data\":{\n", "}\n", "}],\n", "\"caption\":{\n", "\"text\":\"MPG Dataset\"\n", "},\n", "\"theme\":{\n", "\"name\":\"classic\",\n", "\"plot_background\":{\n", "\"size\":1.0,\n", "\"blank\":false\n", "}\n", "}\n", "};\n", " var plotContainer = document.getElementById(\"kto5tG\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val p = letsPlot(df.toMap()) { x = \"displ\"; y = \"hwy\" } + geomPoint() +\n", " labs(\n", " title = \"Fuel efficiency\\nfor most popular models of car\",\n", " subtitle = \"Period 1999-2008\",\n", " caption = \"MPG Dataset\",\n", " x = \"Engine displacement\\n(litres)\", \n", " y = \"Highway\\nmiles per gallon\"\n", " ) + themeClassic() + theme(plotBackground = elementRect(size=1))\n", "p" ] }, { "cell_type": "code", "execution_count": 6, "id": "posted-newsletter", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"hGTUBe\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"ggtitle\":{\n", "\"text\":\"Fuel efficiency\\nfor most popular models of car\",\n", "\"subtitle\":\"Period 1999-2008\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"displ\",\n", "\"y\":\"hwy\"\n", "},\n", "\"data\":{\n", "\"displ\":[1.8,1.8,2.0,2.0,2.8,2.8,3.1,1.8,1.8,2.0,2.0,2.8,2.8,3.1,3.1,2.8,3.1,4.2,5.3,5.3,5.3,5.7,6.0,5.7,5.7,6.2,6.2,7.0,5.3,5.3,5.7,6.5,2.4,2.4,3.1,3.5,3.6,2.4,3.0,3.3,3.3,3.3,3.3,3.3,3.8,3.8,3.8,4.0,3.7,3.7,3.9,3.9,4.7,4.7,4.7,5.2,5.2,3.9,4.7,4.7,4.7,5.2,5.7,5.9,4.7,4.7,4.7,4.7,4.7,4.7,5.2,5.2,5.7,5.9,4.6,5.4,5.4,4.0,4.0,4.0,4.0,4.6,5.0,4.2,4.2,4.6,4.6,4.6,5.4,5.4,3.8,3.8,4.0,4.0,4.6,4.6,4.6,4.6,5.4,1.6,1.6,1.6,1.6,1.6,1.8,1.8,1.8,2.0,2.4,2.4,2.4,2.4,2.5,2.5,3.3,2.0,2.0,2.0,2.0,2.7,2.7,2.7,3.0,3.7,4.0,4.7,4.7,4.7,5.7,6.1,4.0,4.2,4.4,4.6,5.4,5.4,5.4,4.0,4.0,4.6,5.0,2.4,2.4,2.5,2.5,3.5,3.5,3.0,3.0,3.5,3.3,3.3,4.0,5.6,3.1,3.8,3.8,3.8,5.3,2.5,2.5,2.5,2.5,2.5,2.5,2.2,2.2,2.5,2.5,2.5,2.5,2.5,2.5,2.7,2.7,3.4,3.4,4.0,4.7,2.2,2.2,2.4,2.4,3.0,3.0,3.5,2.2,2.2,2.4,2.4,3.0,3.0,3.3,1.8,1.8,1.8,1.8,1.8,4.7,5.7,2.7,2.7,2.7,3.4,3.4,4.0,4.0,2.0,2.0,2.0,2.0,2.8,1.9,2.0,2.0,2.0,2.0,2.5,2.5,2.8,2.8,1.9,1.9,2.0,2.0,2.5,2.5,1.8,1.8,2.0,2.0,2.8,2.8,3.6],\n", "\"hwy\":[29.0,29.0,31.0,30.0,26.0,26.0,27.0,26.0,25.0,28.0,27.0,25.0,25.0,25.0,25.0,24.0,25.0,23.0,20.0,15.0,20.0,17.0,17.0,26.0,23.0,26.0,25.0,24.0,19.0,14.0,15.0,17.0,27.0,30.0,26.0,29.0,26.0,24.0,24.0,22.0,22.0,24.0,24.0,17.0,22.0,21.0,23.0,23.0,19.0,18.0,17.0,17.0,19.0,19.0,12.0,17.0,15.0,17.0,17.0,12.0,17.0,16.0,18.0,15.0,16.0,12.0,17.0,17.0,16.0,12.0,15.0,16.0,17.0,15.0,17.0,17.0,18.0,17.0,19.0,17.0,19.0,19.0,17.0,17.0,17.0,16.0,16.0,17.0,15.0,17.0,26.0,25.0,26.0,24.0,21.0,22.0,23.0,22.0,20.0,33.0,32.0,32.0,29.0,32.0,34.0,36.0,36.0,29.0,26.0,27.0,30.0,31.0,26.0,26.0,28.0,26.0,29.0,28.0,27.0,24.0,24.0,24.0,22.0,19.0,20.0,17.0,12.0,19.0,18.0,14.0,15.0,18.0,18.0,15.0,17.0,16.0,18.0,17.0,19.0,19.0,17.0,29.0,27.0,31.0,32.0,27.0,26.0,26.0,25.0,25.0,17.0,17.0,20.0,18.0,26.0,26.0,27.0,28.0,25.0,25.0,24.0,27.0,25.0,26.0,23.0,26.0,26.0,26.0,26.0,25.0,27.0,25.0,27.0,20.0,20.0,19.0,17.0,20.0,17.0,29.0,27.0,31.0,31.0,26.0,26.0,28.0,27.0,29.0,31.0,31.0,26.0,26.0,27.0,30.0,33.0,35.0,37.0,35.0,15.0,18.0,20.0,20.0,22.0,17.0,19.0,18.0,20.0,29.0,26.0,29.0,29.0,24.0,44.0,29.0,26.0,29.0,29.0,29.0,29.0,23.0,24.0,44.0,41.0,29.0,26.0,28.0,29.0,29.0,29.0,28.0,29.0,26.0,26.0,26.0]\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[{\n", "\"aesthetic\":\"x\",\n", "\"name\":\"Engine displacement\\n(litres)\"\n", "},{\n", "\"aesthetic\":\"y\",\n", "\"name\":\"Highway\\nmiles per gallon\"\n", "}],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"identity\",\n", "\"position\":\"identity\",\n", "\"geom\":\"point\",\n", "\"data\":{\n", "}\n", "}],\n", "\"caption\":{\n", "\"text\":\"MPG Dataset\"\n", "},\n", "\"theme\":{\n", "\"name\":\"classic\",\n", "\"plot_background\":{\n", "\"size\":1.0,\n", "\"blank\":false\n", "},\n", "\"axis_title_y\":{\n", "\"margin\":{\n", "\"r\":10.0,\n", "\"l\":15.0\n", "},\n", "\"blank\":false\n", "},\n", "\"plot_title\":{\n", "\"margin\":{\n", "\"t\":15.0\n", "},\n", "\"blank\":false\n", "},\n", "\"plot_caption\":{\n", "\"margin\":{\n", "\"b\":15.0\n", "},\n", "\"blank\":false\n", "},\n", "\"axis_title_x\":{\n", "\"margin\":{\n", "\"t\":10.0\n", "},\n", "\"blank\":false\n", "},\n", "\"plot_subtitle\":{\n", "\"margin\":{\n", "\"b\":10.0\n", "},\n", "\"blank\":false\n", "}\n", "}\n", "};\n", " var plotContainer = document.getElementById(\"hGTUBe\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "// Change margins around plot title, subtitle, caption and axis titles\n", "\n", "p + theme(plotTitle = elementText(margin = margin(t=15)), \n", " plotSubtitle = elementText(margin = margin(b=10)),\n", " plotCaption = elementText(margin = margin(b=15)),\n", " axisTitleX = elementText(margin = margin(t=10)), \n", " axisTitleY = elementText(margin = margin(r=10, l=15)))" ] }, { "cell_type": "code", "execution_count": 7, "id": "median-badge", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"kF66Zl\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"ggtitle\":{\n", "\"text\":\"Fuel efficiency\\nfor most popular models of car\",\n", "\"subtitle\":\"Period 1999-2008\"\n", "},\n", "\"mapping\":{\n", "\"x\":\"displ\",\n", "\"y\":\"hwy\"\n", "},\n", "\"data\":{\n", "\"displ\":[1.8,1.8,2.0,2.0,2.8,2.8,3.1,1.8,1.8,2.0,2.0,2.8,2.8,3.1,3.1,2.8,3.1,4.2,5.3,5.3,5.3,5.7,6.0,5.7,5.7,6.2,6.2,7.0,5.3,5.3,5.7,6.5,2.4,2.4,3.1,3.5,3.6,2.4,3.0,3.3,3.3,3.3,3.3,3.3,3.8,3.8,3.8,4.0,3.7,3.7,3.9,3.9,4.7,4.7,4.7,5.2,5.2,3.9,4.7,4.7,4.7,5.2,5.7,5.9,4.7,4.7,4.7,4.7,4.7,4.7,5.2,5.2,5.7,5.9,4.6,5.4,5.4,4.0,4.0,4.0,4.0,4.6,5.0,4.2,4.2,4.6,4.6,4.6,5.4,5.4,3.8,3.8,4.0,4.0,4.6,4.6,4.6,4.6,5.4,1.6,1.6,1.6,1.6,1.6,1.8,1.8,1.8,2.0,2.4,2.4,2.4,2.4,2.5,2.5,3.3,2.0,2.0,2.0,2.0,2.7,2.7,2.7,3.0,3.7,4.0,4.7,4.7,4.7,5.7,6.1,4.0,4.2,4.4,4.6,5.4,5.4,5.4,4.0,4.0,4.6,5.0,2.4,2.4,2.5,2.5,3.5,3.5,3.0,3.0,3.5,3.3,3.3,4.0,5.6,3.1,3.8,3.8,3.8,5.3,2.5,2.5,2.5,2.5,2.5,2.5,2.2,2.2,2.5,2.5,2.5,2.5,2.5,2.5,2.7,2.7,3.4,3.4,4.0,4.7,2.2,2.2,2.4,2.4,3.0,3.0,3.5,2.2,2.2,2.4,2.4,3.0,3.0,3.3,1.8,1.8,1.8,1.8,1.8,4.7,5.7,2.7,2.7,2.7,3.4,3.4,4.0,4.0,2.0,2.0,2.0,2.0,2.8,1.9,2.0,2.0,2.0,2.0,2.5,2.5,2.8,2.8,1.9,1.9,2.0,2.0,2.5,2.5,1.8,1.8,2.0,2.0,2.8,2.8,3.6],\n", "\"hwy\":[29.0,29.0,31.0,30.0,26.0,26.0,27.0,26.0,25.0,28.0,27.0,25.0,25.0,25.0,25.0,24.0,25.0,23.0,20.0,15.0,20.0,17.0,17.0,26.0,23.0,26.0,25.0,24.0,19.0,14.0,15.0,17.0,27.0,30.0,26.0,29.0,26.0,24.0,24.0,22.0,22.0,24.0,24.0,17.0,22.0,21.0,23.0,23.0,19.0,18.0,17.0,17.0,19.0,19.0,12.0,17.0,15.0,17.0,17.0,12.0,17.0,16.0,18.0,15.0,16.0,12.0,17.0,17.0,16.0,12.0,15.0,16.0,17.0,15.0,17.0,17.0,18.0,17.0,19.0,17.0,19.0,19.0,17.0,17.0,17.0,16.0,16.0,17.0,15.0,17.0,26.0,25.0,26.0,24.0,21.0,22.0,23.0,22.0,20.0,33.0,32.0,32.0,29.0,32.0,34.0,36.0,36.0,29.0,26.0,27.0,30.0,31.0,26.0,26.0,28.0,26.0,29.0,28.0,27.0,24.0,24.0,24.0,22.0,19.0,20.0,17.0,12.0,19.0,18.0,14.0,15.0,18.0,18.0,15.0,17.0,16.0,18.0,17.0,19.0,19.0,17.0,29.0,27.0,31.0,32.0,27.0,26.0,26.0,25.0,25.0,17.0,17.0,20.0,18.0,26.0,26.0,27.0,28.0,25.0,25.0,24.0,27.0,25.0,26.0,23.0,26.0,26.0,26.0,26.0,25.0,27.0,25.0,27.0,20.0,20.0,19.0,17.0,20.0,17.0,29.0,27.0,31.0,31.0,26.0,26.0,28.0,27.0,29.0,31.0,31.0,26.0,26.0,27.0,30.0,33.0,35.0,37.0,35.0,15.0,18.0,20.0,20.0,22.0,17.0,19.0,18.0,20.0,29.0,26.0,29.0,29.0,24.0,44.0,29.0,26.0,29.0,29.0,29.0,29.0,23.0,24.0,44.0,41.0,29.0,26.0,28.0,29.0,29.0,29.0,28.0,29.0,26.0,26.0,26.0]\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[{\n", "\"aesthetic\":\"x\",\n", "\"name\":\"Engine displacement\\n(litres)\"\n", "},{\n", "\"aesthetic\":\"y\",\n", "\"name\":\"Highway\\nmiles per gallon\"\n", "}],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"identity\",\n", "\"position\":\"identity\",\n", "\"geom\":\"point\",\n", "\"data\":{\n", "}\n", "}],\n", "\"caption\":{\n", "\"text\":\"MPG Dataset\"\n", "},\n", "\"theme\":{\n", "\"name\":\"classic\",\n", "\"plot_background\":{\n", "\"size\":1.0,\n", "\"blank\":false\n", "},\n", "\"axis_text_y\":{\n", "\"margin\":{\n", "\"r\":10.0,\n", "\"l\":15.0\n", "},\n", "\"blank\":false\n", "},\n", "\"axis_text_x\":{\n", "\"margin\":{\n", "\"t\":10.0,\n", "\"b\":15.0\n", "},\n", "\"blank\":false\n", "}\n", "}\n", "};\n", " var plotContainer = document.getElementById(\"kF66Zl\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "// Change margins around axis tick labels\n", "\n", "p + theme(axisTextX = elementText(margin = margin(t=10, b=15)), \n", " axisTextY = elementText(margin = margin(r=10, l=15)))" ] }, { "cell_type": "code", "execution_count": 8, "id": "cutting-justice", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"JNzVq8\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"mapping\":{\n", "\"x\":\"class\",\n", "\"y\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"boxplot\",\n", "\"position\":\"dodge\",\n", "\"geom\":\"boxplot\",\n", "\"data\":{\n", "\"..middle..\":[NaN,NaN,NaN,NaN,27.0,27.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,17.5,NaN,23.0,NaN,NaN,NaN,NaN,17.0,25.0,NaN,NaN,26.0],\n", "\"..upper..\":[NaN,NaN,NaN,NaN,29.0,29.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,19.0,NaN,24.0,NaN,NaN,NaN,NaN,18.0,26.0,NaN,NaN,30.5],\n", "\"..ymax..\":[NaN,NaN,NaN,NaN,33.0,32.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,22.0,NaN,24.0,NaN,NaN,NaN,NaN,20.0,26.0,NaN,NaN,36.0],\n", "\"..lower..\":[NaN,NaN,NaN,NaN,26.0,26.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,17.0,NaN,22.0,NaN,NaN,NaN,NaN,16.0,24.0,NaN,NaN,24.5],\n", "\"..ymin..\":[NaN,NaN,NaN,NaN,23.0,23.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,14.0,NaN,21.0,NaN,NaN,NaN,NaN,15.0,23.0,NaN,NaN,20.0],\n", "\"hwy\":[35.0,37.0,35.0,44.0,NaN,NaN,12.0,12.0,25.0,24.0,27.0,25.0,26.0,23.0,NaN,17.0,NaN,12.0,12.0,12.0,22.0,NaN,NaN,44.0,41.0,NaN],\n", "\"class\":[\"compact\",\"compact\",\"compact\",\"compact\",\"compact\",\"midsize\",\"suv\",\"suv\",\"suv\",\"suv\",\"suv\",\"suv\",\"suv\",\"suv\",\"suv\",\"minivan\",\"minivan\",\"pickup\",\"pickup\",\"pickup\",\"pickup\",\"pickup\",\"2seater\",\"subcompact\",\"subcompact\",\"subcompact\"]\n", "}\n", "}]\n", "};\n", " var plotContainer = document.getElementById(\"JNzVq8\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "// axis labels at different levels\n", "\n", "val p2 = letsPlot(df.toMap()) { x = \"class\"; y = \"hwy\" } + geomBoxplot()\n", "p2" ] }, { "cell_type": "code", "execution_count": 9, "id": "lightweight-detroit", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"47D81n\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"mapping\":{\n", "\"x\":\"class\",\n", "\"y\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"boxplot\",\n", "\"position\":\"dodge\",\n", "\"geom\":\"boxplot\",\n", "\"data\":{\n", "\"..middle..\":[NaN,NaN,NaN,NaN,27.0,27.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,17.5,NaN,23.0,NaN,NaN,NaN,NaN,17.0,25.0,NaN,NaN,26.0],\n", "\"..upper..\":[NaN,NaN,NaN,NaN,29.0,29.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,19.0,NaN,24.0,NaN,NaN,NaN,NaN,18.0,26.0,NaN,NaN,30.5],\n", "\"..ymax..\":[NaN,NaN,NaN,NaN,33.0,32.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,22.0,NaN,24.0,NaN,NaN,NaN,NaN,20.0,26.0,NaN,NaN,36.0],\n", "\"..lower..\":[NaN,NaN,NaN,NaN,26.0,26.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,17.0,NaN,22.0,NaN,NaN,NaN,NaN,16.0,24.0,NaN,NaN,24.5],\n", "\"..ymin..\":[NaN,NaN,NaN,NaN,23.0,23.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,14.0,NaN,21.0,NaN,NaN,NaN,NaN,15.0,23.0,NaN,NaN,20.0],\n", "\"hwy\":[35.0,37.0,35.0,44.0,NaN,NaN,12.0,12.0,25.0,24.0,27.0,25.0,26.0,23.0,NaN,17.0,NaN,12.0,12.0,12.0,22.0,NaN,NaN,44.0,41.0,NaN],\n", "\"class\":[\"compact\",\"compact\",\"compact\",\"compact\",\"compact\",\"midsize\",\"suv\",\"suv\",\"suv\",\"suv\",\"suv\",\"suv\",\"suv\",\"suv\",\"suv\",\"minivan\",\"minivan\",\"pickup\",\"pickup\",\"pickup\",\"pickup\",\"pickup\",\"2seater\",\"subcompact\",\"subcompact\",\"subcompact\"]\n", "}\n", "}],\n", "\"theme\":{\n", "\"axis_text_x\":{\n", "\"margin\":{\n", "\"t\":10.0,\n", "\"b\":10.0\n", "},\n", "\"blank\":false\n", "}\n", "}\n", "};\n", " var plotContainer = document.getElementById(\"47D81n\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p2 + theme(axisTextX = elementText(margin = margin(t=10, b=10)))" ] }, { "cell_type": "code", "execution_count": 10, "id": "alleged-effects", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"hWHITv\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"mapping\":{\n", "\"x\":\"class\",\n", "\"y\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"ggsize\":{\n", "\"width\":550.0,\n", "\"height\":400.0\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"boxplot\",\n", "\"position\":\"dodge\",\n", "\"geom\":\"boxplot\",\n", "\"data\":{\n", "\"..middle..\":[NaN,NaN,NaN,NaN,27.0,27.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,17.5,NaN,23.0,NaN,NaN,NaN,NaN,17.0,25.0,NaN,NaN,26.0],\n", "\"..upper..\":[NaN,NaN,NaN,NaN,29.0,29.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,19.0,NaN,24.0,NaN,NaN,NaN,NaN,18.0,26.0,NaN,NaN,30.5],\n", "\"..ymax..\":[NaN,NaN,NaN,NaN,33.0,32.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,22.0,NaN,24.0,NaN,NaN,NaN,NaN,20.0,26.0,NaN,NaN,36.0],\n", "\"..lower..\":[NaN,NaN,NaN,NaN,26.0,26.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,17.0,NaN,22.0,NaN,NaN,NaN,NaN,16.0,24.0,NaN,NaN,24.5],\n", "\"..ymin..\":[NaN,NaN,NaN,NaN,23.0,23.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,14.0,NaN,21.0,NaN,NaN,NaN,NaN,15.0,23.0,NaN,NaN,20.0],\n", "\"hwy\":[35.0,37.0,35.0,44.0,NaN,NaN,12.0,12.0,25.0,24.0,27.0,25.0,26.0,23.0,NaN,17.0,NaN,12.0,12.0,12.0,22.0,NaN,NaN,44.0,41.0,NaN],\n", "\"class\":[\"compact\",\"compact\",\"compact\",\"compact\",\"compact\",\"midsize\",\"suv\",\"suv\",\"suv\",\"suv\",\"suv\",\"suv\",\"suv\",\"suv\",\"suv\",\"minivan\",\"minivan\",\"pickup\",\"pickup\",\"pickup\",\"pickup\",\"pickup\",\"2seater\",\"subcompact\",\"subcompact\",\"subcompact\"]\n", "}\n", "}]\n", "};\n", " var plotContainer = document.getElementById(\"hWHITv\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "// with rotation\n", "\n", "val p3 = p2 + ggsize(550, 400)\n", "p3" ] }, { "cell_type": "code", "execution_count": 11, "id": "scheduled-identity", "metadata": {}, "outputs": [ { "data": { "text/html": [ " <div id=\"PV3Otu\"></div>\n", " <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n", " (function() {\n", " var plotSpec={\n", "\"mapping\":{\n", "\"x\":\"class\",\n", "\"y\":\"hwy\"\n", "},\n", "\"data\":{\n", "},\n", "\"ggsize\":{\n", "\"width\":550.0,\n", "\"height\":400.0\n", "},\n", "\"kind\":\"plot\",\n", "\"scales\":[],\n", "\"layers\":[{\n", "\"mapping\":{\n", "},\n", "\"stat\":\"boxplot\",\n", "\"position\":\"dodge\",\n", "\"geom\":\"boxplot\",\n", "\"data\":{\n", "\"..middle..\":[NaN,NaN,NaN,NaN,27.0,27.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,17.5,NaN,23.0,NaN,NaN,NaN,NaN,17.0,25.0,NaN,NaN,26.0],\n", "\"..upper..\":[NaN,NaN,NaN,NaN,29.0,29.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,19.0,NaN,24.0,NaN,NaN,NaN,NaN,18.0,26.0,NaN,NaN,30.5],\n", "\"..ymax..\":[NaN,NaN,NaN,NaN,33.0,32.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,22.0,NaN,24.0,NaN,NaN,NaN,NaN,20.0,26.0,NaN,NaN,36.0],\n", "\"..lower..\":[NaN,NaN,NaN,NaN,26.0,26.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,17.0,NaN,22.0,NaN,NaN,NaN,NaN,16.0,24.0,NaN,NaN,24.5],\n", "\"..ymin..\":[NaN,NaN,NaN,NaN,23.0,23.0,NaN,NaN,NaN,NaN,NaN,NaN,NaN,NaN,14.0,NaN,21.0,NaN,NaN,NaN,NaN,15.0,23.0,NaN,NaN,20.0],\n", "\"hwy\":[35.0,37.0,35.0,44.0,NaN,NaN,12.0,12.0,25.0,24.0,27.0,25.0,26.0,23.0,NaN,17.0,NaN,12.0,12.0,12.0,22.0,NaN,NaN,44.0,41.0,NaN],\n", "\"class\":[\"compact\",\"compact\",\"compact\",\"compact\",\"compact\",\"midsize\",\"suv\",\"suv\",\"suv\",\"suv\",\"suv\",\"suv\",\"suv\",\"suv\",\"suv\",\"minivan\",\"minivan\",\"pickup\",\"pickup\",\"pickup\",\"pickup\",\"pickup\",\"2seater\",\"subcompact\",\"subcompact\",\"subcompact\"]\n", "}\n", "}],\n", "\"theme\":{\n", "\"axis_text_x\":{\n", "\"margin\":{\n", "\"t\":10.0\n", "},\n", "\"blank\":false\n", "}\n", "}\n", "};\n", " var plotContainer = document.getElementById(\"PV3Otu\");\n", " window.letsPlotCall(function() {{\n", " LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n", " }});\n", " })(); \n", " </script>" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p3 + theme(axisTextX = elementText(margin = margin(t=10)))" ] } ], "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.7.20-dev-1299" } }, "nbformat": 4, "nbformat_minor": 5 }