galaaz 0.4.9 → 0.4.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +798 -285
  3. data/blogs/galaaz_ggplot/galaaz_ggplot.Rmd +3 -12
  4. data/blogs/galaaz_ggplot/galaaz_ggplot.aux +5 -7
  5. data/blogs/galaaz_ggplot/galaaz_ggplot.html +69 -29
  6. data/blogs/galaaz_ggplot/galaaz_ggplot.pdf +0 -0
  7. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-html/midwest_rb.png +0 -0
  8. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-html/scatter_plot_rb.png +0 -0
  9. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-latex/midwest_rb.pdf +0 -0
  10. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-latex/scatter_plot_rb.pdf +0 -0
  11. data/blogs/galaaz_ggplot/midwest.Rmd +1 -9
  12. data/blogs/gknit/gknit.Rmd +37 -40
  13. data/blogs/gknit/gknit.html +32 -30
  14. data/blogs/gknit/gknit.md +36 -37
  15. data/blogs/gknit/gknit.pdf +0 -0
  16. data/blogs/gknit/gknit.tex +35 -37
  17. data/blogs/manual/manual.Rmd +548 -125
  18. data/blogs/manual/manual.html +509 -286
  19. data/blogs/manual/manual.md +798 -285
  20. data/blogs/manual/manual.pdf +0 -0
  21. data/blogs/manual/manual.tex +2816 -0
  22. data/blogs/manual/manual_files/figure-latex/diverging_bar.pdf +0 -0
  23. data/blogs/nse_dplyr/nse_dplyr.Rmd +240 -74
  24. data/blogs/nse_dplyr/nse_dplyr.html +191 -87
  25. data/blogs/nse_dplyr/nse_dplyr.md +361 -107
  26. data/blogs/nse_dplyr/nse_dplyr.pdf +0 -0
  27. data/blogs/nse_dplyr/nse_dplyr.tex +1373 -0
  28. data/blogs/ruby_plot/ruby_plot.Rmd +61 -81
  29. data/blogs/ruby_plot/ruby_plot.html +54 -57
  30. data/blogs/ruby_plot/ruby_plot.md +48 -67
  31. data/blogs/ruby_plot/ruby_plot.pdf +0 -0
  32. data/blogs/ruby_plot/ruby_plot_files/figure-html/dose_len.png +0 -0
  33. data/blogs/ruby_plot/ruby_plot_files/figure-html/facet_by_delivery.png +0 -0
  34. data/blogs/ruby_plot/ruby_plot_files/figure-html/facet_by_dose.png +0 -0
  35. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_by_delivery_color.png +0 -0
  36. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_by_delivery_color2.png +0 -0
  37. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_with_jitter.png +0 -0
  38. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_with_points.png +0 -0
  39. data/blogs/ruby_plot/ruby_plot_files/figure-html/final_box_plot.png +0 -0
  40. data/blogs/ruby_plot/ruby_plot_files/figure-html/final_violin_plot.png +0 -0
  41. data/blogs/ruby_plot/ruby_plot_files/figure-html/violin_with_jitter.png +0 -0
  42. data/blogs/ruby_plot/ruby_plot_files/figure-latex/dose_len.png +0 -0
  43. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facet_by_delivery.png +0 -0
  44. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facet_by_dose.png +0 -0
  45. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_by_delivery_color.png +0 -0
  46. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_by_delivery_color2.png +0 -0
  47. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_with_decorations.png +0 -0
  48. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_with_jitter.png +0 -0
  49. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_with_points.png +0 -0
  50. data/blogs/ruby_plot/ruby_plot_files/figure-latex/final_box_plot.png +0 -0
  51. data/blogs/ruby_plot/ruby_plot_files/figure-latex/final_violin_plot.png +0 -0
  52. data/blogs/ruby_plot/ruby_plot_files/figure-latex/violin_with_jitter.png +0 -0
  53. data/lib/R_interface/rdata_frame.rb +0 -12
  54. data/lib/R_interface/robject.rb +14 -14
  55. data/lib/R_interface/ruby_extensions.rb +3 -31
  56. data/lib/R_interface/rvector.rb +0 -12
  57. data/lib/gknit/knitr_engine.rb +5 -3
  58. data/lib/util/exec_ruby.rb +22 -61
  59. data/specs/tmp.rb +26 -12
  60. data/version.rb +1 -1
  61. metadata +22 -17
  62. data/bin/gknit_old_r +0 -236
  63. data/blogs/dev/dev.Rmd +0 -23
  64. data/blogs/dev/dev.md +0 -58
  65. data/blogs/dev/dev2.Rmd +0 -65
  66. data/blogs/dev/model.rb +0 -41
  67. data/blogs/dplyr/dplyr.Rmd +0 -29
  68. data/blogs/dplyr/dplyr.html +0 -433
  69. data/blogs/dplyr/dplyr.md +0 -58
  70. data/blogs/dplyr/dplyr.rb +0 -63
  71. data/blogs/galaaz_ggplot/galaaz_ggplot.log +0 -640
  72. data/blogs/galaaz_ggplot/galaaz_ggplot.md +0 -431
  73. data/blogs/galaaz_ggplot/galaaz_ggplot.tex +0 -481
  74. data/blogs/galaaz_ggplot/midwest.png +0 -0
  75. data/blogs/galaaz_ggplot/scatter_plot.png +0 -0
  76. data/blogs/ruby_plot/ruby_plot.tex +0 -1077
@@ -139,8 +139,6 @@ cathegory. Some of the examples require 'rspec' do be available. To install 'r
139
139
  ```{r midwest_child, child = 'midwest.Rmd'}
140
140
  ```
141
141
 
142
- ![Midwest Plot](midwest.png){width=70%}
143
-
144
142
  In R, the code to generate this plot is the following
145
143
 
146
144
  ```{r midwest_r, eval=FALSE}
@@ -310,9 +308,7 @@ class ScatterPlot
310
308
  # Plots the scatterplot
311
309
  #---------------------------------------------------------------------------------
312
310
 
313
- def plot(device = 'awt')
314
- device == 'awt' ? R.awt : R.svg
315
-
311
+ def plot
316
312
  gg = @data.ggplot(E.aes(x: @x, y: @y)) +
317
313
  points +
318
314
  R.geom_smooth(method: @method, se: @confidence) +
@@ -325,9 +321,7 @@ class ScatterPlot
325
321
  caption: @caption) +
326
322
  CorpTheme.global_theme
327
323
 
328
- R.png('scatter_plot.png') if !(device == 'awt')
329
324
  puts gg
330
- R.dev__off
331
325
 
332
326
  end
333
327
 
@@ -337,7 +331,7 @@ end
337
331
 
338
332
  And this is the final code for making the scatter plot with the midwest data
339
333
 
340
- ```{ruby scatter_plot_rb}
334
+ ```{ruby scatter_plot_rb, fig.width = 9.1, fig.height = 9.1}
341
335
  require 'galaaz'
342
336
  require 'ggplot'
343
337
 
@@ -350,12 +344,9 @@ sp.y_label = "Population"
350
344
  sp.group_by(color: :state, size: :popdensity) # try sp.group_by(color: :state)
351
345
  # available methods: "lm", "glm", "loess", "gam"
352
346
  sp.add_smoothing_line(method: "glm")
353
- sp.plot('svg')
354
- # puts sp
347
+ sp.plot
355
348
  ```
356
349
 
357
- ![Midwest Plot with 'glm' function and modified theme](scatter_plot.png){width=70%}
358
-
359
350
  # Conclusion
360
351
 
361
352
  R is a very powerful language for statistical analysis, data analytics, machine learning, plotting
@@ -32,12 +32,10 @@
32
32
  \newlabel{running-other-demos}{{2.4}{3}{Running other demos}{subsection.2.4}{}}
33
33
  \@writefile{toc}{\contentsline {section}{\numberline {3}The demo code}{3}{section.3}}
34
34
  \newlabel{the-demo-code}{{3}{3}{The demo code}{section.3}{}}
35
- \@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Midwest Plot}}{4}{figure.1}}
36
35
  \@writefile{toc}{\contentsline {section}{\numberline {4}An extension to the example}{5}{section.4}}
37
36
  \newlabel{an-extension-to-the-example}{{4}{5}{An extension to the example}{section.4}{}}
38
- \@writefile{toc}{\contentsline {section}{\numberline {5}Conclusion}{8}{section.5}}
39
- \newlabel{conclusion}{{5}{8}{Conclusion}{section.5}{}}
40
- \@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Midwest Plot with `glm' function and modified theme}}{9}{figure.2}}
41
- \newlabel{LastPage}{{}{9}{}{page.9}{}}
42
- \xdef\lastpage@lastpage{9}
43
- \xdef\lastpage@lastpageHy{9}
37
+ \@writefile{toc}{\contentsline {section}{\numberline {5}Conclusion}{9}{section.5}}
38
+ \newlabel{conclusion}{{5}{9}{Conclusion}{section.5}{}}
39
+ \newlabel{LastPage}{{}{10}{}{page.10}{}}
40
+ \xdef\lastpage@lastpage{10}
41
+ \xdef\lastpage@lastpageHy{10}
@@ -283,6 +283,9 @@ img {
283
283
  button.code-folding-btn:focus {
284
284
  outline: none;
285
285
  }
286
+ summary {
287
+ display: list-item;
288
+ }
286
289
  </style>
287
290
 
288
291
 
@@ -290,10 +293,71 @@ button.code-folding-btn:focus {
290
293
  <div class="container-fluid main-container">
291
294
 
292
295
  <!-- tabsets -->
296
+
297
+ <style type="text/css">
298
+ .tabset-dropdown > .nav-tabs {
299
+ display: inline-table;
300
+ max-height: 500px;
301
+ min-height: 44px;
302
+ overflow-y: auto;
303
+ background: white;
304
+ border: 1px solid #ddd;
305
+ border-radius: 4px;
306
+ }
307
+
308
+ .tabset-dropdown > .nav-tabs > li.active:before {
309
+ content: "";
310
+ font-family: 'Glyphicons Halflings';
311
+ display: inline-block;
312
+ padding: 10px;
313
+ border-right: 1px solid #ddd;
314
+ }
315
+
316
+ .tabset-dropdown > .nav-tabs.nav-tabs-open > li.active:before {
317
+ content: "";
318
+ border: none;
319
+ }
320
+
321
+ .tabset-dropdown > .nav-tabs.nav-tabs-open:before {
322
+ content: "";
323
+ font-family: 'Glyphicons Halflings';
324
+ display: inline-block;
325
+ padding: 10px;
326
+ border-right: 1px solid #ddd;
327
+ }
328
+
329
+ .tabset-dropdown > .nav-tabs > li.active {
330
+ display: block;
331
+ }
332
+
333
+ .tabset-dropdown > .nav-tabs > li > a,
334
+ .tabset-dropdown > .nav-tabs > li > a:focus,
335
+ .tabset-dropdown > .nav-tabs > li > a:hover {
336
+ border: none;
337
+ display: inline-block;
338
+ border-radius: 4px;
339
+ }
340
+
341
+ .tabset-dropdown > .nav-tabs.nav-tabs-open > li {
342
+ display: block;
343
+ float: none;
344
+ }
345
+
346
+ .tabset-dropdown > .nav-tabs > li {
347
+ display: none;
348
+ }
349
+ </style>
350
+
293
351
  <script>
294
352
  $(document).ready(function () {
295
353
  window.buildTabsets("TOC");
296
354
  });
355
+
356
+ $(document).ready(function () {
357
+ $('.tabset-dropdown > .nav-tabs > li').click(function () {
358
+ $(this).parent().toggleClass('nav-tabs-open')
359
+ });
360
+ });
297
361
  </script>
298
362
 
299
363
  <!-- code folding -->
@@ -302,7 +366,6 @@ $(document).ready(function () {
302
366
 
303
367
 
304
368
 
305
-
306
369
  <div class="fluid-row" id="header">
307
370
 
308
371
 
@@ -417,10 +480,6 @@ R.options(scipen: 999) # turn-off scientific notation like 1e+48
417
480
  R.theme_set(R.theme_bw) # pre-set the bw theme.
418
481
 
419
482
  midwest = ~:midwest
420
- # midwest &lt;- read.csv(&quot;http://goo.gl/G1K41K&quot;) # bkup data source
421
-
422
- # R.awt # run the awt device if the plot should show on the screen
423
- R.svg # run the svg device if an image should be generated
424
483
 
425
484
  # Scatterplot
426
485
  gg = midwest.ggplot(E.aes(x: :area, y: :poptotal)) +
@@ -434,16 +493,8 @@ gg = midwest.ggplot(E.aes(x: :area, y: :poptotal)) +
434
493
  title: &quot;Scatterplot&quot;,
435
494
  caption: &quot;Source: midwest&quot;)
436
495
 
437
- R.png('midwest.png') # this line is not necessary with the awt device
438
- puts gg
439
-
440
- R.dev__off # R.dev__off turns off the device. If using awt, the plot
441
- # window will be closed</code></pre>
442
- <pre><code>## This is the fake output</code></pre>
443
- <div class="figure">
444
- <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAHgCAIAAADytinCAAAFE0lEQVR42u3UMQ0AAAzDsPIn3aKYtMOGkCMpAC9FAgCDBsCgAQwaAIMGMGgADBoAgwYwaAAMGsCgATBoAAwawKABMGgAgwbAoAEMGgCDBsCgAQwaAIMGMGgADBoAgwYwaAAMGsCgATBoAIMGwKABMGgAgwbAoAEMGgCDBsCgAQwaAIMGMGgADBrAoAEwaAAMGsCgATBoAIMGwKABMGgAgwbAoAEMGgCDBsCgAQwaAIMGMGgADBrAoAEwaAAMGsCgATBoAIMGwKABMGgAgwbAoAEMGgCDBjBoAAwaAIMGMGgADBrAoAEwaAAMGsCgATBoAIMGwKABDBoAgwbAoAEMGgCDBjBoAAwaAIMGMGgADBrAoAEwaAAMGsCgATBoAIMGwKABDBoAgwbAoAEMGgCDBjBoAAwaAIMGMGgADBrAoAEwaACDBsCgATBoAIMGwKABDBoAgwbAoAEMGgCDBjBoAAwawKABMGgADBrAoAEwaACDBsCgATBoAIMGwKABDBoAgwbAoAEMGgCDBjBoAAwawKABMGgADBrAoAEwaACDBsCgATBoAIMGwKABDBoAgwYwaAAMGgCDBjBoAAwawKABMGgADBrAoAEwaACDBsCgAQwaAIMGwKABDBoAgwYwaAAMGgCDBjBoAAwawKABMGgADBrAoAEwaACDBsCgAQwaAIMGwKABDBoAgwYwaAAMGgCDBjBoAAwawKABMGgAgwbAoAEwaACDBsCgAQwaAIMGwKABDBoAgwYwaAAMGsCgATBoAAwawKABMGgAgwbAoAEwaACDBsCgAQwaAIMGwKABDBoAgwYwaAAMGsCgATBoAAwawKABMGgAgwbAoAEwaACDBsCgAQwaAIMGMGgADBoAgwYwaAAMGsCgATBoAAwawKABMGgAgwbAoAEMGgCDBsCgAQwaAIMGMGgADBoAgwYwaAAMGsCgATBoAIOWAMCgATBoAIMGwKABDBoAgwbAoAEMGgCDBjBoAAwaAIMGMGgADBrAoAEwaACDBsCgATBoAIMGwKABDBoAgwbAoAEMGgCDBjBoAAwawKABMGgADBrAoAEwaACDBsCgATBoAIMGwKABDBoAgwYwaAAMGgCDBjBoAAwawKABMGgADBrAoAEwaACDBsCgATBoAIMGwKABDBoAgwYwaAAMGgCDBjBoAAwawKABMGgADBrAoAEwaACDBsCgAQwaAIMGwKABDBoAgwYwaAAMGgCDBjBoAAwawKABMGgAgwbAoAEwaACDBsCgAQwaAIMGwKABDBoAgwYwaAAMGgCDBjBoAAwawKABMGgAgwbAoAEwaACDBsCgAQwaAIMGwKABDBoAgwYwaAAMGsCgATBoAAwawKABMGgAgwbAoAEwaACDBsCgAQwaAIMGMGgADBoAgwYwaAAMGsCgATBoAAwawKABMGgAgwbAoAEwaACDBsCgAQwaAIMGMGgADBoAgwYwaAAMGsCgATBoAAwawKABMGgAgwbAoAEMGgCDBsCgAQwaAIMGMGgADBoAgwYwaAAMGsCgATBoAIMGwKABMGgAgwbAoAEMGgCDBsCgAQwaAIMGMGgADBoAgwYwaAAMGsCgATBoAIMGwKABMGgAgwbAoAEMGgCDBsCgAQwaAIMGMGgADBrAoAEwaAAMGsCgATBoAIMGwKABMGgAgwbAoAEMGgCDBjBoAAwaAIMGMGgADBrAoAEwaAAMGsCgATBoAIMGwKABMGgAgwbAoAEMGoArA7lpEZ+0+dl3AAAAAElFTkSuQmCC" alt="Midwest Plot" style="width:70.0%" />
445
- <p class="caption">Midwest Plot</p>
446
- </div>
496
+ puts gg</code></pre>
497
+ <p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAo8AAAKPCAIAAACD8rcsAACAAElEQVR42uy9CXwU9f3/HyFgOIrBWisSJQrtn5ZUoqg/LFijjVQrYqpWgl++VSlfBVsqaoiUW+WqCIKiXCJBrqABAiThTjhzgDRcgilKlEA5cmxCsnd28/8kg8tkZ3ez2exuZjfP12MePGY/uzuZvPjM65n3Zz4zE1KDEEIIIXUrBAsQQgghaI0QQgghaI0QQghBa4QQQghBa4QQQghBa4QQQghaI4QQQghaI4QQQtAaIYQQQtAaNcN/cJ3wASGEoHVgKzMz8w9/+EPnzp1DQ0O7dev2wgsv7N+/33ek9DM+G/vjoDtCCEFr1Wn9+vWtWrUKUQhaI4QQgtZqUa9evQScnnzyyZMnT5rN5suXL69du/ahhx6C1gghhKC1WtSmTRsBp7KyMhefERSfO3dunz59OnTo0K5dO8HyTZs2SW9t3779iSeeuOGGG0T7Aw88sHPnTjvs2dXrLor4FStWiC2LTbVt27Z79+5jxowpLy+321plZeUrr7xy4403tm7dWt5+5cqVl156qVOnTh07doyLiyssLHRGX6PROHPmzN69e7erk1h57733TCaTi31GCCEErZtZkZGRgklTp04tLS11+AFBsgEDBjjDmF2jYP9XX33VWFpbrdbnn39e+Zao+ysqKuRbGzRokMMdkLcLRURE2H4d+YcNBsPvfvc75Q96+OGHJWBDa4QQgtZq1GeffSZh6brrruvRo8fgwYNXrlxpqzWF3n//ffHuT37ykyVLlpSUlIjaNDs7W9Sv0rvPPvvs4cOHRWNRUVF8fLz4pPjXWV3rrFFsWbTccccdqampop4WP10gv1+/fqLxrbfekn/r9ttv37Vrl/hxdlsTtXheXp5oz83NFdsRLYmJicofJ6pqsd65c+c1a9ZU1mn16tXh4eGiUVTYLvYZIYQQtG5mZWZmPvnkkx06dLAVlNHR0ZcuXZLe7d27t2gRCG9wOxqNRnzytttuayyt/9//+3+i5eDBg/LGc+fOicZf/OIX8m9lZGQ43Nq2bdtsLVu2bBEtv/rVr5Q/7q677hLrycnJ8i2sWrVK+pWhNUIIQWu1q7q6+uuvv164cKGoUwWuhg4dKrW3a9dOOmHs8CuzZs0SnGvfvr2N9G3btm0sreVfVw6ty7+l1Wodbk2n09laxGdES1hYmPLHiUaxXlVVJd+C+NVEo/g1oTVCCEHrgNG3334rcPXTn/60QVq//vrrDhHbWFpLP8KZXEMUWiOEELRuiSouLpYXtaJ0Fi9XrVql/OSNN94oDSyXl5dbrdaKigo71F133XXipXhL/i1l47333itajh8/7ur/ySWtGzUS/sUXX8i3sGbNGvlIuMN9RgghBK2bU/fff/8nn3xy6tQpg8FgNBq/+uqr2NhYgatf//rX0gdmz54tXt5www2fffZZaWmp+ExOTo40y0yqiVNTU8V3v/vuu8GDB9sxVRTo4mVmZqYcfspGaabb7bffvnz58rNnz5rNZrHBgoKCxYsXP/DAA+7QukePHnl5eSaTKTc3984773Q9y0zsgAB2VZ3EnxqdO3eWzzJzuM8IIYSgdbP+/o7UqlWrlJQU6QMCgb///e8dDlD/6U9/krcMHDjQjqnPPvusckzbYeOoUaOaMhL+5JNPunkF14MPPqj8ETExMbZ55g53DyGEELRuTh06dOi111676667RKHcpk2brl27PvPMM/v27ZN/RgB71qxZ4jNhYWEdOnQQbJPujlJcXPz000+3b98+PDz8xRdfLC8vtyPc+fPnxdZuvPFGaXjZRaPQzp07BSnFDojdEDvTq1evV199VVTM7tC6oqJi2LBhokoWu/fUU0+dOXPG7gO2lwLYosKWfhfxU8TKv/71L/klYc52DyGEELRGTRobwAeEEILWCFojhBCC1ghaI4QQgtbQGiGEELRGCCGEELRGCCGEoDVCCCGEoDVCCCGEoDVCCCEErRFCCCEErRFCCCEErRFCCCFojRBCCCFojRBCCEFrhBBCCEFrhBBCCEHrxqmiouKGG24IDw/XaDS+/ln9+vUTP87hPtx4443FxcXu/s/9qNDQ0DvvvHPq1KnV1dW+6iUePTiEx40ghBC09qYWLVr03HPPDR06dMGCBb7+WfPmzZs/f76y/eOPP37++ec9YKHZbM7Ly+vdu/fkyZObkdbKz0BrhBCC1t5U3759d+3atWfPnvvvv9/XP6ukpOTee+9Vtt911127d+/2mKBHjhy57bbbVEVrhBBC0NprOnXq1C9+8Qur1SrWe/bs+fXXX8sJtGrVKoHwDh06tGrVSmrcuHFjdHR027Ztu3Xr9umnn8o3dfHixZEjR7Zr1+7mm29+9dVXtVqtw5/4zDPPHDhwQN6Sk5MjfrS0fvLkyccff7xTp07iR9xzzz3Jycnu0NFkMoWGhtpeLly4sHv37m3atBH/Ll68WP4t8VaPHj3EW3feeeeyZcvcKY7lbzn8HUPqS/ktF/sjHL777ruvv/568SsLZy5fvkyfRAghaG2vxMTEWbNmSeuzZ88eM2aMnCW//vWvBVkFC6WWrVu3du7cef369QaD4ejRo7/85S9TU1Ntn+/atWtSUpJerz937tzQoUNHjRrl8CempaX95S9/kbe8+OKL4kdL6wLbH330UUVFhdFozMvLe/rpp92htdgZW239+eefR0ZGir8AxBays7PFXxWCiLZvCV6KzYq3cnNzBbDF79IoWjv7HV183fX+3HXXXfv37xdvCU6/9NJLcXFx9EmEEILW9VRdXS1AYpvbJVYES2zTtQRLDh48KP/8gw8+aMOb0KFDhwRsHG75ypUrXbp0cfZDBSbLysqkl+Xl5TfeeGNJSYn0MiwsTICw4f852XlrsRuiPJ04caLU0qdPn4yMDNsn09PT77vvPtu3tm3bZntry5Ytffv2bRStnf2OLr7uen9Onjxpe0t40qFDBw5LhBCC1vZlbnx8vLxFvNy8ebONJXYTrdu3b2836msbIb906dKwYcNE6dm6dWu7txwW9B988IG0Lipp+fyy119//eabbx45cqQoYYuKilzQWpL4cXfcccfbb78tsG3jvU6ns31Sq9WKFtu37N5q166d+7R28Tu6+Lrr/ZHOQTgbM0AIIQSta08hhyhkG3xWkkNgprKy0uGmHn744X/84x8FBQV6vb6m7kSyC/CcOnXqV7/6lbQeFRW1Z88e+buHDx9+7733nnvuOVFzz5gxw3VtrZRXaC0gqqS1i9/RY1q7/3shhBC0bokqKSm54YYb7K6xrqioCA8Pl8alleTo16+fs5nbbdq0kRgmafv27a7B07dvX7GpAwcO2OaXKXXmzBlRzTeW1n369NmyZYvtZUZGhjsj4eIH2Qbnhb7++msliV38jtddd52zKtn1/kBrhBCC1q40b948h5c4/+///q94yyE5du7cee+992ZnZxsMhqqqKvHyj3/8o41JkyZNKi0tFXXkpk2bunTp4ho8ixYtio+P/8tf/jJnzhx5+2OPPSYoKDYuivjFixf36tWrsbT+/PPP77zzztzcXFH7in/vuOMO+ayuHj165OXl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" /><!-- --></p>
447
498
  <p>In R, the code to generate this plot is the following</p>
448
499
  <pre class="r"><code># install.packages(&quot;ggplot2&quot;)
449
500
  # load package and data
@@ -509,7 +560,6 @@ module CorpTheme
509
560
  end
510
561
 
511
562
  end</code></pre>
512
- <pre><code>## This is the fake output</code></pre>
513
563
  <p>We now define a ScatterPlot class:</p>
514
564
  <pre class="ruby"><code># ScatterPlot.rb
515
565
  # creates a scatter plot and allow some configuration
@@ -582,9 +632,7 @@ class ScatterPlot
582
632
  # Plots the scatterplot
583
633
  #---------------------------------------------------------------------------------
584
634
 
585
- def plot(device = 'awt')
586
- device == 'awt' ? R.awt : R.svg
587
-
635
+ def plot
588
636
  gg = @data.ggplot(E.aes(x: @x, y: @y)) +
589
637
  points +
590
638
  R.geom_smooth(method: @method, se: @confidence) +
@@ -597,14 +645,11 @@ class ScatterPlot
597
645
  caption: @caption) +
598
646
  CorpTheme.global_theme
599
647
 
600
- R.png('scatter_plot.png') if !(device == 'awt')
601
648
  puts gg
602
- R.dev__off
603
649
 
604
650
  end
605
651
 
606
652
  end</code></pre>
607
- <pre><code>## This is the fake output</code></pre>
608
653
  <p>And this is the final code for making the scatter plot with the midwest data</p>
609
654
  <pre class="ruby"><code>require 'galaaz'
610
655
  require 'ggplot'
@@ -618,13 +663,8 @@ sp.y_label = &quot;Population&quot;
618
663
  sp.group_by(color: :state, size: :popdensity) # try sp.group_by(color: :state)
619
664
  # available methods: &quot;lm&quot;, &quot;glm&quot;, &quot;loess&quot;, &quot;gam&quot;
620
665
  sp.add_smoothing_line(method: &quot;glm&quot;)
621
- # sp.plot('svg')
622
- puts sp</code></pre>
623
- <pre><code>## This is the fake output</code></pre>
624
- <div class="figure">
625
- <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAHgCAIAAADytinCAAAFE0lEQVR42u3UMQ0AAAzDsPIn3aKYtMOGkCMpAC9FAgCDBsCgAQwaAIMGMGgADBoAgwYwaAAMGsCgATBoAAwawKABMGgAgwbAoAEMGgCDBsCgAQwaAIMGMGgADBoAgwYwaAAMGsCgATBoAIMGwKABMGgAgwbAoAEMGgCDBsCgAQwaAIMGMGgADBrAoAEwaAAMGsCgATBoAIMGwKABMGgAgwbAoAEMGgCDBsCgAQwaAIMGMGgADBrAoAEwaAAMGsCgATBoAIMGwKABMGgAgwbAoAEMGgCDBjBoAAwaAIMGMGgADBrAoAEwaAAMGsCgATBoAIMGwKABDBoAgwbAoAEMGgCDBjBoAAwaAIMGMGgADBrAoAEwaAAMGsCgATBoAIMGwKABDBoAgwbAoAEMGgCDBjBoAAwaAIMGMGgADBrAoAEwaACDBsCgATBoAIMGwKABDBoAgwbAoAEMGgCDBjBoAAwawKABMGgADBrAoAEwaACDBsCgATBoAIMGwKABDBoAgwbAoAEMGgCDBjBoAAwawKABMGgADBrAoAEwaACDBsCgATBoAIMGwKABDBoAgwYwaAAMGgCDBjBoAAwawKABMGgADBrAoAEwaACDBsCgAQwaAIMGwKABDBoAgwYwaAAMGgCDBjBoAAwawKABMGgADBrAoAEwaACDBsCgAQwaAIMGwKABDBoAgwYwaAAMGgCDBjBoAAwawKABMGgAgwbAoAEwaACDBsCgAQwaAIMGwKABDBoAgwYwaAAMGsCgATBoAAwawKABMGgAgwbAoAEwaACDBsCgAQwaAIMGwKABDBoAgwYwaAAMGsCgATBoAAwawKABMGgAgwbAoAEwaACDBsCgAQwaAIMGMGgADBoAgwYwaAAMGsCgATBoAAwawKABMGgAgwbAoAEMGgCDBsCgAQwaAIMGMGgADBoAgwYwaAAMGsCgATBoAIOWAMCgATBoAIMGwKABDBoAgwbAoAEMGgCDBjBoAAwaAIMGMGgADBrAoAEwaACDBsCgATBoAIMGwKABDBoAgwbAoAEMGgCDBjBoAAwawKABMGgADBrAoAEwaACDBsCgATBoAIMGwKABDBoAgwYwaAAMGgCDBjBoAAwawKABMGgADBrAoAEwaACDBsCgATBoAIMGwKABDBoAgwYwaAAMGgCDBjBoAAwawKABMGgADBrAoAEwaACDBsCgAQwaAIMGwKABDBoAgwYwaAAMGgCDBjBoAAwawKABMGgAgwbAoAEwaACDBsCgAQwaAIMGwKABDBoAgwYwaAAMGgCDBjBoAAwawKABMGgAgwbAoAEwaACDBsCgAQwaAIMGwKABDBoAgwYwaAAMGsCgATBoAAwawKABMGgAgwbAoAEwaACDBsCgAQwaAIMGMGgADBoAgwYwaAAMGsCgATBoAAwawKABMGgAgwbAoAEwaACDBsCgAQwaAIMGMGgADBoAgwYwaAAMGsCgATBoAAwawKABMGgAgwbAoAEMGgCDBsCgAQwaAIMGMGgADBoAgwYwaAAMGsCgATBoAIMGwKABMGgAgwbAoAEMGgCDBsCgAQwaAIMGMGgADBoAgwYwaAAMGsCgATBoAIMGwKABMGgAgwbAoAEMGgCDBsCgAQwaAIMGMGgADBrAoAEwaAAMGsCgATBoAIMGwKABMGgAgwbAoAEMGgCDBjBoAAwaAIMGMGgADBrAoAEwaAAMGsCgATBoAIMGwKABMGgAgwbAoAEMGoArA7lpEZ+0+dl3AAAAAElFTkSuQmCC" alt="Midwest Plot with ‘glm’ function and modified theme" style="width:70.0%" />
626
- <p class="caption">Midwest Plot with ‘glm’ function and modified theme</p>
627
- </div>
666
+ sp.plot</code></pre>
667
+ <p><img src="data:image/png;base64,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oMeOHfvjH//oVGkNACCt7eb06dO33367Xq8X8/379z958qQ8gdatWycivEuXLu3atZMaY2Nj/f39PTw8evfuvXLlSvmq8vPzR44c2alTpx49erz//vsKhcLsIz7//POHDh2St6SmpoqHluZPnTr15JNPdu3aVTzEvffeGxUVZU06ajQad3d3w9WlS5fedtttHTp0EJfLly+XLyVu6tevn7ipb9++q1atsqY4lt9k9jW61WW6lIXnI3r4nnvu6dixo3jJomcKCgr4qwMA0trYhAkT5syZI83PnTt3/Pjx8iy54447RLKKLJRaduzY0a1bty1btqhUquPHj//pT3+KiYkx3L9Xr14RERFVVVWXLl0KDg4eM2aM2UeMi4t77bXX5C1vvPGGeGhpXsT2woULy8vL1Wp1enr6c889Z01aiydjqK3XrFnj6+sr/gMQa0hJSRH/VYhENCwl8lKsVtyUlpYmAlu8lkaldX2v0cLilp/PXXfddfDgQXGTyOk333wzKCiIvzoAIK3rqK6uFkFiGNslZkSWGIZriSw5fPiw/P5DhgwxxJtw5MgRETZm13zt2rWePXvW96AiJktKSqSrZWVl3bt3Lyoqkq56enqKIGz4jZH9bi2ehihPJ0+eLLUMGDAgISHBcM/4+Pj777/fsNTOnTsNN33//fcBAQGNSuv6XqOFxS0/n1OnThluEn3SpUsX/uoAgLQ2LnNfeeUVeYu4un37dkOWGA207ty5s9FWX8MW8qtXr7711lui9Gzfvr3RTWYL+q+++kqaF5W0fHzZBx980KNHj5EjR4oSNi8vz0JaS8TD9enT57PPPhOxbch7pVJpuKdCoRAthqWMburUqZP1aW3hNVpY3PLzkX6DqG+bAQCAtK79CdnNhGHjs2lyiJipqKgwu6pHHnnkP//5T3Z2dlVVVc31H5ItBM/p06f/8pe/SPN+fn779u2T33r06NEvvvjipZdeEjX3rFmzLNfWpuyS1iJETdPawmtsclpb/7oAAG0xrYuKim666SajfazLy8u9vb2l7dKmyTFo0KD6Rm536NBByjDJrl27LAdPQECAWNWhQ4cM48tMnTt3TlTzjU3rAQMGfP/994arCQkJ1mwJFw9k2DgvnDx50jSJLbzGG264ob4q2fLzIa0BgLS2ZP78+WZ3cf73v/8tbjKbHImJiffdd19KSopKpaqs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" /><!-- --></p>
628
668
  </div>
629
669
  <div id="conclusion" class="section level1">
630
670
  <h1>Conclusion</h1>
@@ -4,7 +4,7 @@ screen, bellow, we generate an 'svg' image and then include it in this document.
4
4
  generate and image, the R.svg device is used. To generate the plot on the screen, use the R.awt
5
5
  device, as commented on the code.
6
6
 
7
- ```{ruby midwest_rb, warning=FALSE}
7
+ ```{ruby midwest_rb, warning=FALSE, fig.width = 9.1, fig.height = 9.1}
8
8
  require 'galaaz'
9
9
  require 'ggplot'
10
10
 
@@ -13,10 +13,6 @@ R.options(scipen: 999) # turn-off scientific notation like 1e+48
13
13
  R.theme_set(R.theme_bw) # pre-set the bw theme.
14
14
 
15
15
  midwest = ~:midwest
16
- # midwest <- read.csv("http://goo.gl/G1K41K") # bkup data source
17
-
18
- # R.awt # run the awt device if the plot should show on the screen
19
- R.svg # run the svg device if an image should be generated
20
16
 
21
17
  # Scatterplot
22
18
  gg = midwest.ggplot(E.aes(x: :area, y: :poptotal)) +
@@ -30,10 +26,6 @@ gg = midwest.ggplot(E.aes(x: :area, y: :poptotal)) +
30
26
  title: "Scatterplot",
31
27
  caption: "Source: midwest")
32
28
 
33
- R.png('midwest.png') # this line is not necessary with the awt device
34
29
  puts gg
35
-
36
- R.dev__off # R.dev__off turns off the device. If using awt, the plot
37
- # window will be closed
38
30
  ```
39
31
 
@@ -7,13 +7,13 @@ tags: [Tech, Data Science, Ruby, R, GraalVM]
7
7
  date: "29/04/2019"
8
8
  bibliography: stats.bib
9
9
  output:
10
+ html_document:
11
+ self_contained: true
12
+ keep_md: true
10
13
  pdf_document:
11
14
  includes:
12
15
  in_header: ["../../sty/galaaz.sty"]
13
16
  number_sections: yes
14
- html_document:
15
- self_contained: true
16
- keep_md: true
17
17
  ---
18
18
 
19
19
  ```{r setup, echo=FALSE}
@@ -40,9 +40,8 @@ the same output and reports.
40
40
 
41
41
  The R community has put a great deal of effort in reproducible research. In 2002, Sweave was
42
42
  introduced and it allowed mixing R code with Latex generating high quality PDF documents. A
43
- Sweave
44
- document could include code, the results of executing the code, graphics and text such that it
45
- contained the whole narrative to reproduce the research. In
43
+ Sweave document could include code, the results of executing the code, graphics and text
44
+ such that it contained the whole narrative to reproduce the research. In
46
45
  2012, Knitr, developed by Yihui Xie from RStudio was released to replace Sweave and to
47
46
  consolidate in one single package the many extensions and add-on packages that
48
47
  were necessary for Sweave.
@@ -87,12 +86,12 @@ this problem, it is very rare to see any __R markdown__ document in the Ruby com
87
86
  When variables can be used accross chunks, then no overhead is needed:
88
87
 
89
88
  ```{ruby persistence}
90
- @lst = R.list(a: 1, b: 2, c: 3)
89
+ lst = R.list(a: 1, b: 2, c: 3)
91
90
  # any other code can be added here
92
91
  ```
93
92
 
94
93
  ```{ruby use_var}
95
- puts @lst
94
+ puts lst
96
95
  ```
97
96
 
98
97
  In the Python community, the same effort to have code and text in an integrated environment
@@ -335,12 +334,9 @@ In this example, the ruby chunk is called 'first_ruby_chunk'. One important
335
334
  aspect of chunk labels is that they cannot be duplicated. If a chunk label is
336
335
  duplicated, gKnit will stop with an error.
337
336
 
338
- Another important point with Ruby chunks is that they are evaluated in the scope
339
- of a class called RubyChunk. To make sure that variables are
340
- available between chunks, they should be made as instance variables of the
341
- RubyChunk class. In the following chunk, variable '\@a', '\@b' and '\@c'
342
- are standard Ruby variables and '\@vec' and '\@vec2' are two vectors created
343
- by calling the 'c' method on the R module.
337
+ In the following chunk, variable 'a', 'b' and 'c' are standard Ruby variables
338
+ and 'vec' and 'vec2' are two vectors created by calling the 'c' method on the
339
+ R module.
344
340
 
345
341
  In Galaaz, the R module allows us to access R functions transparently. The 'c'
346
342
  function in R, is a function that concatenates its arguments making a vector.
@@ -351,22 +347,22 @@ functions. gKnit will knit standard Ruby code, or even general text without
351
347
  any code.
352
348
 
353
349
  ```{ruby split_data}
354
- @a = [1, 2, 3]
355
- @b = "US$ 250.000"
356
- @c = "The 'outputs' function"
350
+ a = [1, 2, 3]
351
+ b = "US$ 250.000"
352
+ c = "The 'outputs' function"
357
353
 
358
- @vec = R.c(1, 2, 3)
359
- @vec2 = R.c(10, 20, 30)
354
+ vec = R.c(1, 2, 3)
355
+ vec2 = R.c(10, 20, 30)
360
356
  ```
361
357
 
362
- In this next block, variables '\@a', '\@vec' and '\@vec2' are used and printed.
358
+ In the next block, variables 'a', 'vec' and 'vec2' are used and printed.
363
359
 
364
360
  ```{ruby split2}
365
- puts @a
366
- puts @vec * @vec2
361
+ puts a
362
+ puts vec * vec2
367
363
  ```
368
364
 
369
- Note that \@a is a standard Ruby Array and \@vec and \@vec2 are vectors that behave accordingly,
365
+ Note that 'a' is a standard Ruby Array and 'vec' and 'vec2' are vectors that behave accordingly,
370
366
  where multiplication works as expected.
371
367
 
372
368
 
@@ -413,38 +409,38 @@ ten aspects are:
413
409
 
414
410
  ```{ruby diverging_plot_pre}
415
411
  # copy the R variable :mtcars to the Ruby mtcars variable
416
- @mtcars = ~:mtcars
412
+ mtcars = ~:mtcars
417
413
 
418
414
  # create a new column 'car_name' to store the car names so that it can be
419
415
  # used for plotting. The 'rownames' of the data frame cannot be used as
420
416
  # data for plotting
421
- @mtcars.car_name = R.rownames(:mtcars)
417
+ mtcars.car_name = R.rownames(:mtcars)
422
418
 
423
419
  # compute normalized mpg and add it to a new column called mpg_z
424
420
  # Note that the mean value for mpg can be obtained by calling the 'mean'
425
421
  # function on the vector 'mtcars.mpg'. The same with the standard
426
422
  # deviation 'sd'. The vector is then rounded to two digits with 'round 2'
427
- @mtcars.mpg_z = ((@mtcars.mpg - @mtcars.mpg.mean)/@mtcars.mpg.sd).round 2
423
+ mtcars.mpg_z = ((mtcars.mpg - mtcars.mpg.mean)/mtcars.mpg.sd).round 2
428
424
 
429
425
  # create a new column 'mpg_type'. Function 'ifelse' is a vectorized function
430
426
  # that looks at every element of the mpg_z vector and if the value is below
431
427
  # 0, returns 'below', otherwise returns 'above'
432
- @mtcars.mpg_type = (@mtcars.mpg_z < 0).ifelse("below", "above")
428
+ mtcars.mpg_type = (mtcars.mpg_z < 0).ifelse("below", "above")
433
429
 
434
430
  # order the mtcar data set by the mpg_z vector from smaler to larger values
435
- @mtcars = @mtcars[@mtcars.mpg_z.order, :all]
431
+ mtcars = mtcars[mtcars.mpg_z.order, :all]
436
432
 
437
433
  # convert the car_name column to a factor to retain sorted order in plot
438
- @mtcars.car_name = @mtcars.car_name.factor levels: @mtcars.car_name
434
+ mtcars.car_name = mtcars.car_name.factor levels: mtcars.car_name
439
435
 
440
436
  # let's look at the first records of the final data frame
441
- puts @mtcars.head
437
+ puts mtcars.head
442
438
  ```
443
439
 
444
440
  ```{ruby diverging_bar, fig.width = 9.1, fig.height = 6.5}
445
441
  require 'ggplot'
446
442
 
447
- puts @mtcars.ggplot(E.aes(x: :car_name, y: :mpg_z, label: :mpg_z)) +
443
+ puts mtcars.ggplot(E.aes(x: :car_name, y: :mpg_z, label: :mpg_z)) +
448
444
  R.geom_bar(E.aes(fill: :mpg_type), stat: 'identity', width: 0.5) +
449
445
  R.scale_fill_manual(name: 'Mileage',
450
446
  labels: R.c('Above Average', 'Below Average'),
@@ -463,8 +459,8 @@ with the 'rb' engine. The following chunk specification will
463
459
  create and inline Ruby text:
464
460
 
465
461
  ````
466
- This is some text with inline Ruby accessing variable \@b which has value:
467
- ```{rb puts "```{rb puts @b}\n```"}
462
+ This is some text with inline Ruby accessing variable 'b' which has value:
463
+ ```{rb puts "```{rb puts b}\n```"}
468
464
  ```
469
465
  and is followed by some other text!
470
466
  ````
@@ -472,8 +468,8 @@ and is followed by some other text!
472
468
  <div style="margin-bottom:30px;">
473
469
  </div>
474
470
 
475
- This is some text with inline Ruby accessing variable \@b which has value:
476
- ```{rb puts @b}
471
+ This is some text with inline Ruby accessing variable 'b' which has value:
472
+ ```{rb puts b}
477
473
  ```
478
474
  and is followed by some other text!
479
475
 
@@ -486,7 +482,7 @@ with inline Ruby code.
486
482
 
487
483
 
488
484
  ```{ruby heading, echo = FALSE}
489
- outputs "### #{@c}"
485
+ outputs "### #{c}"
490
486
  ```
491
487
 
492
488
  He have previously used the standard 'puts' method in Ruby chunks in order produce
@@ -500,15 +496,15 @@ For example, suppose we want to create a new heading in our document, but the he
500
496
  phrase is the result of some code processing: maybe it's the first line of a file we are
501
497
  going to read. Method 'outputs' adds its output as if typed in the __R markdown__ document.
502
498
 
503
- Take now a look at variable '\@c' (it was defined in a previous block above) as
504
- '\@c = "The 'outputs' function". "The 'outputs' function" is actually the name of this
499
+ Take now a look at variable 'c' (it was defined in a previous block above) as
500
+ 'c = "The 'outputs' function". "The 'outputs' function" is actually the name of this
505
501
  section and it was created using the 'outputs' function inside a Ruby chunk.
506
502
 
507
503
  The ruby chunk to generate this heading is:
508
504
 
509
505
  ````
510
506
  ```{ruby heading}`r ''`
511
- outputs "### #{@c}"
507
+ outputs "### #{c}"
512
508
  ```
513
509
  ````
514
510
 
@@ -666,13 +662,14 @@ author: "Rodrigo Botafogo"
666
662
  tags: [Galaaz, Ruby, R, TruffleRuby, FastR, GraalVM, knitr, gknit]
667
663
  date: "29 October 2018"
668
664
  output:
669
- pdf_document:
665
+ pdf\_document:
670
666
  includes:
671
667
  in\_header: ["../../sty/galaaz.sty"]
672
668
  number\_sections: yes
673
669
  ---
674
670
  ```
675
671
 
672
+
676
673
  # Conclusion
677
674
 
678
675
  In order to do reproducible research, one of the main basic tools needed is a systhem that