{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Pick Sampling"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "   <div id=\"7fw9lO\"></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(\"7fw9lO\").appendChild(div);\n",
       "           };\n",
       "           var e = document.getElementById(\"7fw9lO\");\n",
       "           e.appendChild(script);\n",
       "       })();\n",
       "   </script>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%useLatestDescriptors\n",
    "%use lets-plot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "fun genWord(length:Int):String {\n",
    "    val letters = ('a'..'z')\n",
    "    return List(length) { letters.random() }.joinToString(\"\")\n",
    "}    \n",
    "\n",
    "fun genWordSet(n:Int):Set<String> {\n",
    "    val words = HashSet<String>()\n",
    "    while(words.size < n) {\n",
    "        words.add(genWord(5))\n",
    "    }\n",
    "    return words\n",
    "}\n",
    "\n",
    "fun data(n:Int, words:Set<String>):Map<String, *> {\n",
    "    return mapOf(\n",
    "            \"word\" to List(n) { words.random() },\n",
    "            \"g\" to List(n) { listOf('a','b','c').random() }\n",
    "        )\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "// Number of unique words exceeds threshold (50) of default 'pick' sampling on bar chart.\n",
    "val words = genWordSet(500)\n",
    "val dat = data(1000, words)\n",
    "val p = ggplot(dat) { x = \"word\" }"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "   <div id=\"iDfdUi\"></div>\n",
       "   <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n",
       "       (function() {\n",
       "           var plotSpec={\n",
       "\"mapping\":{\n",
       "\"x\":\"word\"\n",
       "},\n",
       "\"data\":{\n",
       "},\n",
       "\"kind\":\"plot\",\n",
       "\"scales\":[],\n",
       "\"layers\":[{\n",
       "\"mapping\":{\n",
       "},\n",
       "\"stat\":\"count\",\n",
       "\"sampling\":\"none\",\n",
       "\"position\":\"stack\",\n",
       "\"geom\":\"bar\",\n",
       "\"data\":{\n",
       "\"..count..\":[1.0,3.0,2.0,4.0,5.0,2.0,2.0,4.0,2.0,6.0,2.0,1.0,3.0,2.0,4.0,1.0,4.0,2.0,3.0,2.0,5.0,2.0,2.0,1.0,5.0,5.0,5.0,2.0,2.0,3.0,4.0,5.0,1.0,1.0,2.0,3.0,3.0,3.0,1.0,2.0,2.0,4.0,1.0,3.0,5.0,2.0,3.0,2.0,3.0,1.0,5.0,3.0,1.0,5.0,3.0,2.0,2.0,1.0,3.0,1.0,4.0,4.0,4.0,2.0,1.0,2.0,2.0,3.0,1.0,1.0,2.0,3.0,3.0,3.0,1.0,4.0,4.0,3.0,2.0,1.0,1.0,1.0,4.0,4.0,3.0,1.0,1.0,3.0,2.0,6.0,4.0,1.0,3.0,3.0,1.0,1.0,4.0,3.0,4.0,2.0,2.0,4.0,3.0,3.0,1.0,3.0,3.0,2.0,1.0,3.0,3.0,4.0,2.0,3.0,1.0,6.0,4.0,4.0,5.0,3.0,2.0,3.0,2.0,4.0,7.0,1.0,2.0,2.0,1.0,2.0,2.0,3.0,3.0,2.0,1.0,3.0,4.0,2.0,6.0,2.0,4.0,2.0,1.0,3.0,5.0,2.0,2.0,2.0,3.0,2.0,2.0,3.0,4.0,1.0,2.0,2.0,1.0,3.0,3.0,3.0,4.0,3.0,2.0,2.0,2.0,4.0,2.0,3.0,4.0,2.0,4.0,2.0,3.0,3.0,4.0,1.0,3.0,3.0,1.0,1.0,5.0,2.0,3.0,1.0,3.0,2.0,1.0,6.0,5.0,4.0,3.0,4.0,1.0,1.0,3.0,1.0,2.0,4.0,1.0,1.0,6.0,2.0,2.0,3.0,3.0,3.0,1.0,1.0,4.0,3.0,5.0,4.0,3.0,3.0,2.0,8.0,2.0,1.0,2.0,2.0,4.0,2.0,4.0,2.0,3.0,6.0,2.0,2.0,4.0,3.0,4.0,1.0,3.0,3.0,4.0,2.0,1.0,2.0,4.0,2.0,4.0,1.0,4.0,1.0,3.0,2.0,3.0,2.0,2.0,2.0,2.0,5.0,3.0,2.0,2.0,3.0,1.0,2.0,1.0,4.0,3.0,3.0,1.0,1.0,2.0,1.0,4.0,1.0,5.0,2.0,1.0,2.0,4.0,4.0,2.0,1.0,3.0,1.0,2.0,3.0,2.0,3.0,2.0,2.0,2.0,1.0,2.0,3.0,2.0,1.0,1.0,1.0,3.0,2.0,4.0,1.0,2.0,3.0,1.0,1.0,4.0,2.0,2.0,2.0,2.0,3.0,3.0,1.0,1.0,1.0,1.0,3.0,2.0,1.0,2.0,4.0,3.0,1.0,1.0,2.0,2.0,4.0,1.0,1.0,2.0,2.0,3.0,3.0,1.0,2.0,3.0,1.0,1.0,2.0,1.0,2.0,1.0,4.0,3.0,1.0,2.0,1.0,1.0,4.0,2.0,3.0,1.0,1.0,1.0,2.0,1.0,3.0,1.0,2.0,1.0,2.0,3.0,1.0,1.0,1.0,2.0,2.0,1.0,4.0,2.0,1.0,2.0,3.0,2.0,1.0,1.0,2.0,1.0,2.0,2.0,2.0,1.0,1.0,1.0,1.0,3.0,1.0,4.0,2.0,2.0,1.0,2.0,1.0,1.0,1.0,2.0,2.0,1.0,2.0,1.0,1.0,1.0,1.0,1.0,1.0,4.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,2.0,2.0,1.0,1.0,3.0,1.0,1.0,1.0,1.0,1.0,1.0],\n",
       "\"word\":[\"nffkd\",\"phgla\",\"fbpsu\",\"kbcik\",\"zrhmk\",\"kqwws\",\"kchjj\",\"tbqqq\",\"qkwhf\",\"emeue\",\"uxfju\",\"ahjzn\",\"emeir\",\"fqexv\",\"dpewe\",\"lkddr\",\"wortr\",\"mrddp\",\"ztzcr\",\"tnupf\",\"ymzkc\",\"lcutx\",\"abkic\",\"bvjfq\",\"fsntm\",\"xyyvf\",\"dyiek\",\"nbkam\",\"lksfe\",\"gbght\",\"qgbmv\",\"dbapq\",\"gwkjh\",\"xxwrp\",\"mwbcr\",\"pledn\",\"sntvp\",\"ochay\",\"xjnsl\",\"eoirj\",\"tvdwa\",\"npokl\",\"kmvop\",\"xbsxm\",\"ckmkt\",\"ywsjw\",\"xymoh\",\"axtwz\",\"fereh\",\"inajj\",\"orepm\",\"yfqkg\",\"wqmme\",\"mgzru\",\"aabvr\",\"xfjpz\",\"xitrd\",\"agiwq\",\"deuxv\",\"wyhkc\",\"nknfw\",\"ekilf\",\"igssk\",\"xghqn\",\"smoby\",\"cxtgw\",\"sozqq\",\"nbhbl\",\"loerd\",\"wlmjn\",\"oscvv\",\"xzgef\",\"uozpf\",\"vrmrr\",\"oriql\",\"qohai\",\"szxsv\",\"lzhjv\",\"cciia\",\"qadnp\",\"zbwjf\",\"kqmgi\",\"iwaem\",\"lhoxo\",\"ycxtb\",\"tgwvx\",\"oknnm\",\"kmxos\",\"gtkgh\",\"iocbg\",\"iwzvi\",\"zcjob\",\"qszwx\",\"wvkpc\",\"apvcc\",\"jjtrz\",\"yynvw\",\"zxpha\",\"gxljz\",\"kujlf\",\"lmsux\",\"iltql\",\"qqpmh\",\"jiveq\",\"sgips\",\"aqihl\",\"bsdqi\",\"qxeht\",\"dnpba\",\"kjuak\",\"ekgpm\",\"bxctq\",\"rkahb\",\"mfamn\",\"ueiwq\",\"mfezu\",\"hgfek\",\"wdnmp\",\"oupws\",\"vqjye\",\"ssxhc\",\"fotfa\",\"ehsgl\",\"qqtja\",\"kkbxm\",\"gpgak\",\"gardw\",\"eeolq\",\"ledqg\",\"lqgqb\",\"mxsjx\",\"wufbd\",\"krlqd\",\"xuvpw\",\"imuie\",\"cmjgw\",\"tztll\",\"kmury\",\"aflay\",\"uwvfk\",\"jygth\",\"yrjlo\",\"zaojg\",\"gfduz\",\"xqvqu\",\"rdfob\",\"mlqzv\",\"vmeuj\",\"fgmjn\",\"wirvh\",\"nleca\",\"npfwo\",\"adfyq\",\"gfihg\",\"xzmvl\",\"znpoy\",\"atjbd\",\"wlysi\",\"srtqw\",\"deinq\",\"laxiu\",\"tcypg\",\"ikffk\",\"ktujj\",\"jqtkv\",\"gtfon\",\"jvtvb\",\"irxnj\",\"czqeu\",\"magos\",\"kzlqi\",\"grhbk\",\"pjcvk\",\"xydoi\",\"tcnrz\",\"wgxzy\",\"kixmb\",\"hnkol\",\"bzkbb\",\"yjrll\",\"fbrzx\",\"grgnw\",\"brtsm\",\"sxsvj\",\"xcrpl\",\"ljnyt\",\"liero\",\"uftlc\",\"jqtef\",\"mgfgj\",\"tasam\",\"fysbv\",\"ntkfy\",\"yrnrw\",\"fyoux\",\"wgdzw\",\"dxivv\",\"znwkh\",\"eyyvx\",\"pdbns\",\"bswzk\",\"olups\",\"vqxya\",\"ukrex\",\"evvpk\",\"kiefn\",\"athdk\",\"ccpfe\",\"bwumq\",\"whpil\",\"fnppi\",\"dxqly\",\"hhyvd\",\"tosss\",\"ximkw\",\"wzmam\",\"xlwnd\",\"uogko\",\"ouzbt\",\"tqqsm\",\"oepby\",\"xaqse\",\"hldjx\",\"kzykt\",\"piyih\",\"iicxe\",\"fulfo\",\"izqjb\",\"puuxy\",\"emrcj\",\"qlqsc\",\"crkjh\",\"mgbxq\",\"gomvz\",\"lxvun\",\"ebydc\",\"rsjpg\",\"fvfyt\",\"tffdb\",\"ffbac\",\"zjdik\",\"fkvgy\",\"winja\",\"kiiyx\",\"atwrv\",\"rvfnx\",\"nloqs\",\"hubzd\",\"npiks\",\"tizrz\",\"enxys\",\"nlypb\",\"ggyrh\",\"jmbkx\",\"zvxlk\",\"kqrde\",\"ffulp\",\"lytsc\",\"zjkog\",\"cpwas\",\"lqyik\",\"mhzxk\",\"rdklo\",\"oqjnv\",\"rikyc\",\"svahm\",\"ddlrm\",\"jdymh\",\"dtkqx\",\"qgcji\",\"cccyg\",\"olfiw\",\"nbixj\",\"vmdib\",\"iogyq\",\"evgvg\",\"igjkj\",\"pmyyz\",\"zzogb\",\"nocmw\",\"lpwxf\",\"rfqqg\",\"rixct\",\"abhzw\",\"xcolb\",\"sucmq\",\"sevhw\",\"bzeau\",\"iusoy\",\"bsotn\",\"lpgrk\",\"svkmz\",\"kxrlj\",\"rcjps\",\"rntkk\",\"ttdey\",\"etybt\",\"xmepi\",\"otksx\",\"kpegv\",\"wfwgj\",\"ibohp\",\"tzbos\",\"ddetj\",\"oolil\",\"rigty\",\"boudg\",\"khskt\",\"liuht\",\"uekme\",\"nvycz\",\"gdegw\",\"gfinl\",\"xszvl\",\"rfkik\",\"ksmxl\",\"ohdek\",\"bkdhp\",\"pgtps\",\"xrukq\",\"hvhsp\",\"uzhwk\",\"mjzfj\",\"koatl\",\"ludag\",\"xewwc\",\"crxhr\",\"xjyba\",\"enyrx\",\"znnzf\",\"zdcjc\",\"zwphh\",\"rcjnl\",\"kamui\",\"ewkrw\",\"lunkv\",\"dqoww\",\"yqvdt\",\"szynl\",\"opanb\",\"vuosk\",\"syywh\",\"aiboi\",\"oprie\",\"xjlnj\",\"pljqv\",\"okthy\",\"bztdf\",\"qbigw\",\"nbtym\",\"hbxxl\",\"gwsfb\",\"rhkhg\",\"nhdda\",\"jgkjh\",\"cxnhg\",\"lvxzn\",\"barbs\",\"cfbyr\",\"akhyc\",\"jeyku\",\"wvsty\",\"uplzl\",\"vinmc\",\"guszp\",\"taqxn\",\"qoowa\",\"sydbr\",\"xpfwf\",\"lgeuv\",\"schel\",\"qfopp\",\"xhbwx\",\"fanzn\",\"qnqbv\",\"uxnis\",\"zvrlt\",\"bvkho\",\"ghzdy\",\"dqfgq\",\"qyrpe\",\"nmhhv\",\"wsxcn\",\"rijbt\",\"xhyrk\",\"uewkl\",\"fvbjx\",\"mgtcm\",\"mucfo\",\"cnmuu\",\"ihtrc\",\"tvvik\",\"qukaz\",\"gfwfg\",\"jyvag\",\"uhgsa\",\"fkaxr\",\"uybks\",\"elssd\",\"lrypq\",\"sqvck\",\"mzrjq\",\"tqrku\",\"ivlyt\",\"kycty\",\"hrvzh\",\"lpkaz\",\"whewh\",\"rtvsx\",\"ybhjd\",\"qdtvp\",\"kykij\",\"hzzgh\",\"rkfbd\",\"rcwms\",\"qdicm\",\"lbxgr\",\"efvmd\",\"luhzy\",\"qstab\",\"opzoe\",\"potmx\",\"hvaeg\",\"tuwzt\",\"jfaaq\"]\n",
       "}\n",
       "}]\n",
       "};\n",
       "           var plotContainer = document.getElementById(\"iDfdUi\");\n",
       "           window.letsPlotCall(function() {{\n",
       "               LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n",
       "           }});\n",
       "       })();    \n",
       "   </script>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "// Disable sampling to see the overplotting.\n",
    "p + geomBar(sampling = samplingNone)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "   <div id=\"g5vzez\"></div>\n",
       "   <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n",
       "       (function() {\n",
       "           var plotSpec={\n",
       "\"mapping\":{\n",
       "\"x\":\"word\"\n",
       "},\n",
       "\"data\":{\n",
       "},\n",
       "\"kind\":\"plot\",\n",
       "\"scales\":[],\n",
       "\"layers\":[{\n",
       "\"mapping\":{\n",
       "},\n",
       "\"stat\":\"count\",\n",
       "\"position\":\"stack\",\n",
       "\"geom\":\"bar\",\n",
       "\"data\":{\n",
       "\"..count..\":[1.0,3.0,2.0,4.0,5.0,2.0,2.0,4.0,2.0,6.0,2.0,1.0,3.0,2.0,4.0,1.0,4.0,2.0,3.0,2.0,5.0,2.0,2.0,1.0,5.0,5.0,5.0,2.0,2.0,3.0,4.0,5.0,1.0,1.0,2.0,3.0,3.0,3.0,1.0,2.0,2.0,4.0,1.0,3.0,5.0,2.0,3.0,2.0,3.0,1.0],\n",
       "\"word\":[\"nffkd\",\"phgla\",\"fbpsu\",\"kbcik\",\"zrhmk\",\"kqwws\",\"kchjj\",\"tbqqq\",\"qkwhf\",\"emeue\",\"uxfju\",\"ahjzn\",\"emeir\",\"fqexv\",\"dpewe\",\"lkddr\",\"wortr\",\"mrddp\",\"ztzcr\",\"tnupf\",\"ymzkc\",\"lcutx\",\"abkic\",\"bvjfq\",\"fsntm\",\"xyyvf\",\"dyiek\",\"nbkam\",\"lksfe\",\"gbght\",\"qgbmv\",\"dbapq\",\"gwkjh\",\"xxwrp\",\"mwbcr\",\"pledn\",\"sntvp\",\"ochay\",\"xjnsl\",\"eoirj\",\"tvdwa\",\"npokl\",\"kmvop\",\"xbsxm\",\"ckmkt\",\"ywsjw\",\"xymoh\",\"axtwz\",\"fereh\",\"inajj\"]\n",
       "}\n",
       "}],\n",
       "\"computation_messages\":[\"sampling_pick(n=50) was applied to [bar/count stat] layer\"]\n",
       "};\n",
       "           var plotContainer = document.getElementById(\"g5vzez\");\n",
       "           window.letsPlotCall(function() {{\n",
       "               LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n",
       "           }});\n",
       "       })();    \n",
       "   </script>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "// Draw plot with default sampling.\n",
    "p + geomBar()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "   <div id=\"a1otPn\"></div>\n",
       "   <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n",
       "       (function() {\n",
       "           var plotSpec={\n",
       "\"mapping\":{\n",
       "\"x\":\"word\"\n",
       "},\n",
       "\"data\":{\n",
       "},\n",
       "\"kind\":\"plot\",\n",
       "\"scales\":[],\n",
       "\"layers\":[{\n",
       "\"mapping\":{\n",
       "\"fill\":\"g\"\n",
       "},\n",
       "\"stat\":\"count\",\n",
       "\"position\":\"stack\",\n",
       "\"geom\":\"bar\",\n",
       "\"data\":{\n",
       "\"..count..\":[1.0,1.0,3.0,1.0,1.0,2.0,1.0,2.0,3.0,1.0,2.0,1.0,2.0,1.0,3.0,1.0,1.0,2.0,1.0,1.0,2.0,1.0,1.0,3.0,2.0,2.0,2.0,4.0,1.0,1.0,1.0,2.0,1.0,1.0,2.0,1.0,1.0,1.0,3.0,1.0,3.0,2.0,1.0,1.0,3.0,1.0,1.0,3.0,2.0,1.0,2.0,1.0,1.0,2.0,1.0,1.0,2.0,1.0,2.0,1.0,3.0,1.0,1.0,1.0,2.0,1.0,1.0,1.0,2.0,1.0,2.0,2.0,1.0,1.0,1.0,2.0,2.0,2.0,2.0,1.0,2.0,2.0,2.0,2.0,1.0,1.0,1.0,2.0,1.0,1.0,1.0,1.0,2.0,1.0,1.0,1.0,2.0,1.0,1.0,1.0],\n",
       "\"g\":[\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\"],\n",
       "\"word\":[\"nffkd\",\"fbpsu\",\"kbcik\",\"zrhmk\",\"tbqqq\",\"dpewe\",\"lkddr\",\"ymzkc\",\"fsntm\",\"nbkam\",\"gbght\",\"qgbmv\",\"dbapq\",\"xxwrp\",\"sntvp\",\"xjnsl\",\"tvdwa\",\"xyyvf\",\"ywsjw\",\"xymoh\",\"axtwz\",\"inajj\",\"wqmme\",\"mgzru\",\"aabvr\",\"nknfw\",\"ekilf\",\"igssk\",\"wlmjn\",\"uozpf\",\"oriql\",\"qohai\",\"kqmgi\",\"tgwvx\",\"iocbg\",\"wvkpc\",\"apvcc\",\"yynvw\",\"zxpha\",\"lmsux\",\"iltql\",\"jiveq\",\"bsdqi\",\"kjuak\",\"bxctq\",\"rkahb\",\"mfamn\",\"mfezu\",\"hgfek\",\"oupws\",\"zrhmk\",\"aabvr\",\"ekilf\",\"yynvw\",\"hgfek\",\"gbght\",\"fsntm\",\"tbqqq\",\"oupws\",\"kbcik\",\"qgbmv\",\"iltql\",\"ymzkc\",\"wvkpc\",\"kjuak\",\"mfamn\",\"mgzru\",\"jiveq\",\"iocbg\",\"dpewe\",\"mfezu\",\"bsdqi\",\"xyyvf\",\"dbapq\",\"ywsjw\",\"xyyvf\",\"qohai\",\"zrhmk\",\"oupws\",\"fbpsu\",\"tbqqq\",\"nknfw\",\"dbapq\",\"xymoh\",\"bxctq\",\"mgzru\",\"dpewe\",\"ymzkc\",\"yynvw\",\"mfezu\",\"ekilf\",\"hgfek\",\"uozpf\",\"rkahb\",\"lmsux\",\"nbkam\",\"iocbg\",\"wvkpc\",\"mfamn\",\"tvdwa\"]\n",
       "}\n",
       "}],\n",
       "\"computation_messages\":[\"sampling_pick(n=50) was applied to [bar/count stat] layer\"]\n",
       "};\n",
       "           var plotContainer = document.getElementById(\"a1otPn\");\n",
       "           window.letsPlotCall(function() {{\n",
       "               LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n",
       "           }});\n",
       "       })();    \n",
       "   </script>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "// 'pick' sampling preserves groups on bar chart.\n",
    "p + geomBar { fill=\"g\" }"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "   <div id=\"NwjcVS\"></div>\n",
       "   <script type=\"text/javascript\" data-lets-plot-script=\"plot\">\n",
       "       (function() {\n",
       "           var plotSpec={\n",
       "\"mapping\":{\n",
       "\"x\":\"word\"\n",
       "},\n",
       "\"data\":{\n",
       "},\n",
       "\"kind\":\"plot\",\n",
       "\"scales\":[],\n",
       "\"layers\":[{\n",
       "\"mapping\":{\n",
       "\"x\":\"@as_discrete@word\",\n",
       "\"fill\":\"g\"\n",
       "},\n",
       "\"stat\":\"count\",\n",
       "\"position\":\"stack\",\n",
       "\"geom\":\"bar\",\n",
       "\"data_meta\":{\n",
       "\"mapping_annotations\":[{\n",
       "\"aes\":\"x\",\n",
       "\"annotation\":\"as_discrete\",\n",
       "\"parameters\":{\n",
       "\"label\":\"word\",\n",
       "\"order_by\":\"..count..\"\n",
       "}\n",
       "}]\n",
       "},\n",
       "\"data\":{\n",
       "\"..count..\":[1.0,1.0,2.0,3.0,1.0,2.0,2.0,3.0,2.0,2.0,1.0,3.0,1.0,4.0,1.0,3.0,3.0,2.0,2.0,1.0,2.0,4.0,3.0,2.0,3.0,3.0,3.0,2.0,2.0,2.0,3.0,2.0,2.0,1.0,3.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,2.0,2.0,3.0,3.0,4.0,2.0,2.0,2.0,2.0,3.0,2.0,1.0,4.0,2.0,1.0,1.0,1.0,1.0,2.0,1.0,3.0,2.0,2.0,4.0,2.0,1.0,1.0,4.0,2.0,1.0,1.0,2.0,2.0,2.0,2.0,2.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,3.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,1.0,1.0,3.0,1.0,2.0,2.0,1.0,1.0,4.0,2.0,2.0,1.0,1.0,1.0,1.0,1.0,2.0,1.0,2.0,2.0,1.0,2.0,2.0,1.0,1.0,1.0,1.0,1.0,2.0,1.0,1.0],\n",
       "\"@as_discrete@word\":[\"zrhmk\",\"tbqqq\",\"ymzkc\",\"fsntm\",\"qgbmv\",\"dbapq\",\"xyyvf\",\"mgzru\",\"qohai\",\"iocbg\",\"yynvw\",\"mfezu\",\"oupws\",\"kkbxm\",\"aflay\",\"tcnrz\",\"uftlc\",\"jqtef\",\"bswzk\",\"fnppi\",\"iicxe\",\"fbrzx\",\"qlqsc\",\"dyiek\",\"tffdb\",\"wzmam\",\"dtkqx\",\"zjdik\",\"rntkk\",\"xqvqu\",\"uzhwk\",\"wdnmp\",\"vmdib\",\"wfwgj\",\"nlypb\",\"vinmc\",\"wsxcn\",\"ckmkt\",\"sqvck\",\"emeue\",\"puuxy\",\"znwkh\",\"zrhmk\",\"wortr\",\"emeue\",\"ckmkt\",\"orepm\",\"szxsv\",\"wdnmp\",\"qqtja\",\"xqvqu\",\"yynvw\",\"znwkh\",\"puuxy\",\"zjdik\",\"winja\",\"fsntm\",\"nlypb\",\"tbqqq\",\"uftlc\",\"vmdib\",\"oupws\",\"dtkqx\",\"qgbmv\",\"iicxe\",\"wfwgj\",\"fnppi\",\"jqtef\",\"tffdb\",\"ymzkc\",\"wzmam\",\"aflay\",\"rntkk\",\"mgzru\",\"iocbg\",\"tztll\",\"oprie\",\"yqvdt\",\"mfezu\",\"dyiek\",\"vinmc\",\"xyyvf\",\"wsxcn\",\"dbapq\",\"sqvck\",\"kkbxm\",\"emeue\",\"xyyvf\",\"dyiek\",\"qohai\",\"zrhmk\",\"kkbxm\",\"tztll\",\"oupws\",\"orepm\",\"tbqqq\",\"fbrzx\",\"jqtef\",\"aflay\",\"wzmam\",\"dbapq\",\"qqtja\",\"mgzru\",\"zjdik\",\"bswzk\",\"iicxe\",\"ymzkc\",\"yynvw\",\"ckmkt\",\"tcnrz\",\"mfezu\",\"nlypb\",\"yqvdt\",\"rntkk\",\"oprie\",\"uftlc\",\"wfwgj\",\"vinmc\",\"iocbg\",\"vmdib\",\"dtkqx\",\"uzhwk\",\"qlqsc\",\"sqvck\",\"wortr\",\"wsxcn\",\"xqvqu\"],\n",
       "\"g\":[\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"b\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"c\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\"]\n",
       "}\n",
       "}],\n",
       "\"computation_messages\":[\"sampling_pick(n=50) was applied to [bar/count stat] layer\"]\n",
       "};\n",
       "           var plotContainer = document.getElementById(\"NwjcVS\");\n",
       "           window.letsPlotCall(function() {{\n",
       "               LetsPlot.buildPlotFromProcessedSpecs(plotSpec, -1, -1, plotContainer);\n",
       "           }});\n",
       "       })();    \n",
       "   </script>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "// Orgering words by `count` might be a good idea.\n",
    "p + geomBar {\n",
    "    fill = \"g\"\n",
    "    x = asDiscrete(\"word\", orderBy = \"..count..\")\n",
    "}"
   ]
  }
 ],
 "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": 4
}