<p><div><div><div><div data-show-faces="false" data-height="21" data-width="100" data-layout="button_count" data-send="true" data-href="https://www.r-bloggers.com/a-ggplot-based-marimekkomosaic-plot/"></div></div><div></div></div><div></div></div>
<div>
(This article was first published on <strong><a href="https://edwinth.github.io/blog/ggmm/"> That’s so Random</a></strong>, and kindly contributed to <a rel="nofollow" href="https://www.r-bloggers.com/">R-bloggers)</a> </div>
<p>One of my first baby steps into the open source world, was when I answered <a rel="nofollow" href="https://stackoverflow.com/questions/19233365/how-to-create-a-marimekko-mosaic-plot-in-ggplot2" target="_blank">this SO question</a> over four years ago. Recently I revisited the post and saw that Z.Lin did a very nice and more modern implementation, using <code>dplyr</code> and facetting in <code>ggplot2</code>. I decided to merge here ideas with mine to create a general function that makes MM plots. I also added two features: counts, proportions, or percentages to the cells as text and highlighting cells by a condition.</p>
<p>For those of you unfamiliar with this type of plot, it graphs the joint distribution of two categorical variables. <code>x</code> is plotted in bins, with the bin widths reflecting its marginal distribution. The fill of the bins is based on <code>y</code>. Each bin is filled by the co-occurence of its <code>x</code> and <code>y</code> values. When <code>x</code> and <code>y</code> are independent, all the bins are filled (approximately) in the same way. The nice feature of the MM plot, is that is shows both the joint distribution and the marginal distributions of <code>x</code> and <code>y</code>.</p>
<h2><code>ggmm</code></h2>
<p>To demonstrate the function, I’ll take a selection of the <code>emergency</code> data set from the <code>padr</code> package. Such that it has three types of incidents in four parts of town. We also do some relabelling for prettier plot labels.</p>
<div>
<div>
<pre><code><span>em_sel</span><span> </span><span>&lt;-</span><span> </span><span>padr</span><span>::</span><span>emergency</span><span> </span><span>%>%</span><span> </span><span>dplyr</span><span>::</span><span>filter</span><span>(</span><span>
</span><span>title</span><span> </span><span>%in%</span><span> </span><span>c</span><span>(</span><span>&quot;Traffic: VEHICLE ACCIDENT -&quot;</span><span>,</span><span> </span><span>&quot;Traffic: DISABLED VEHICLE -&quot;</span><span>,</span><span> </span><span>&quot;Fire: FIRE ALARM&quot;</span><span>),</span><span>
</span><span>twp</span><span> </span><span>%in%</span><span> </span><span>c</span><span>(</span><span>&quot;LOWER MERION&quot;</span><span>,</span><span> </span><span>&quot;ABINGTON&quot;</span><span>,</span><span> </span><span>&quot;NORRISTOWN&quot;</span><span>,</span><span> </span><span>&quot;UPPER MERION&quot;</span><span>))</span><span> </span><span>%>%</span><span> </span><span>mutate</span><span>(</span><span>twp</span><span> </span><span>=</span><span> </span><span>factor</span><span>(</span><span>twp</span><span>,</span><span> </span><span>levels</span><span> </span><span>=</span><span> </span><span>c</span><span>(</span><span>&quot;LOWER MERION&quot;</span><span>,</span><span> </span><span>&quot;ABINGTON&quot;</span><span>,</span><span> </span><span>&quot;NORRISTOWN&quot;</span><span>,</span><span> </span><span>&quot;UPPER MERION&quot;</span><span>),</span><span>
</span><span>labels</span><span> </span><span>=</span><span> </span><span>c</span><span>(</span><span>&quot;Low Mer.&quot;</span><span>,</span><span> </span><span>&quot;Abing.&quot;</span><span>,</span><span> </span><span>&quot;Norris.&quot;</span><span>,</span><span> </span><span>&quot;Upper Mer.&quot;</span><span>)))</span><span>
</span></code></pre>
</div>
</div>
<p>The function takes a data frame and the bare (unquoted) column names of the <code>x</code> and <code>y</code> variables. It will then create a <code>ggplot</code> object. The variables don’t have to be factors or characters, the function coerces them to character.</p>
<div>
<div>
<pre><code><span>ggmm</span><span>(</span><span>em_sel</span><span>,</span><span> </span><span>twp</span><span>,</span><span> </span><span>title</span><span>)</span><span>
</span></code></pre>
</div>
</div>
<p><img alt="plot of chunk unnamed-chunk-3" src="https://i1.wp.com/edwinth.github.io/figure/source/2017-11-01-ggmm/unnamed-chunk-3-1.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>Now I promised you two additional features. First, adding text to the cells. The <code>add_text</code> argument takes either “n”, to show the absolute counts</p>
<div>
<div>
<pre><code><span>ggmm</span><span>(</span><span>em_sel</span><span>,</span><span> </span><span>twp</span><span>,</span><span> </span><span>title</span><span>,</span><span> </span><span>add_text</span><span> </span><span>=</span><span> </span><span>&quot;n&quot;</span><span>)</span><span>
</span></code></pre>
</div>
</div>
<p><img alt="plot of chunk unnamed-chunk-4" src="https://i0.wp.com/edwinth.github.io/figure/source/2017-11-01-ggmm/unnamed-chunk-4-1.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>“prop” to show the proportions of each cell with respect to the joint distribution</p>
<div>
<div>
<pre><code><span>ggmm</span><span>(</span><span>em_sel</span><span>,</span><span> </span><span>twp</span><span>,</span><span> </span><span>title</span><span>,</span><span> </span><span>add_text</span><span> </span><span>=</span><span> </span><span>&quot;prop&quot;</span><span>)</span><span>
</span></code></pre>
</div>
</div>
<p><img alt="plot of chunk unnamed-chunk-5" src="https://i1.wp.com/edwinth.github.io/figure/source/2017-11-01-ggmm/unnamed-chunk-5-1.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>or “perc”, which reflects the percentages of the joint.</p>
<div>
<div>
<pre><code><span>ggmm</span><span>(</span><span>em_sel</span><span>,</span><span> </span><span>twp</span><span>,</span><span> </span><span>title</span><span>,</span><span> </span><span>add_text</span><span> </span><span>=</span><span> </span><span>&quot;perc&quot;</span><span>)</span><span>
</span></code></pre>
</div>
</div>
<p><img alt="plot of chunk unnamed-chunk-6" src="https://i1.wp.com/edwinth.github.io/figure/source/2017-11-01-ggmm/unnamed-chunk-6-1.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>An argument is provided to control the rounding of the text.</p>
<p>Secondly, the <code>alpha_condition</code> argument takes an unevaluated expression in terms of the column names of <code>x</code> and <code>y</code>. The cells for which the expression yields <code>TRUE</code> will be highlighted (or rather the others will be downlighted). This is useful when you want to stress an aspect of the distribution, like a value of <code>y</code> that varies greatly over <code>x</code>.</p>
<div>
<div>
<pre><code><span>ggmm</span><span>(</span><span>em_sel</span><span>,</span><span> </span><span>twp</span><span>,</span><span> </span><span>title</span><span>,</span><span> </span><span>alpha_condition</span><span> </span><span>=</span><span> </span><span>title</span><span> </span><span>==</span><span> </span><span>&quot;Traffic: DISABLED VEHICLE -&quot;</span><span>)</span><span>
</span></code></pre>
</div>
</div>
<p><img alt="plot of chunk unnamed-chunk-7" src="https://i2.wp.com/edwinth.github.io/figure/source/2017-11-01-ggmm/unnamed-chunk-7-1.png?w=456&ssl=1" data-recalc-dims="1"></p>
<p>I hope you find this function useful. The source code is shared below. Also it is in the <a rel="nofollow" href="https://github.com/EdwinTh/thatssorandom" target="_blank">package</a> accompanying this blog. Which you can install by running <code>devtools::install_github(EdwinTh/thatssorandom)</code>.</p>
<div>
<div>
<pre><code><span>library</span><span>(</span><span>tidyverse</span><span>)</span><span>
</span><span>ggmm</span><span> </span><span>&lt;-</span><span> </span><span>function</span><span>(</span><span>df</span><span>,</span><span>
</span><span>x</span><span>,</span><span>
</span><span>y</span><span>,</span><span>
</span><span>alpha_condition</span><span> </span><span>=</span><span> </span><span>1</span><span> </span><span>==</span><span> </span><span>1</span><span>,</span><span>
</span><span>add_text</span><span> </span><span>=</span><span> </span><span>c</span><span>(</span><span>NA</span><span>,</span><span> </span><span>&quot;n&quot;</span><span>,</span><span> </span><span>&quot;prop&quot;</span><span>,</span><span> </span><span>&quot;perc&quot;</span><span>),</span><span>
</span><span>round_text</span><span> </span><span>=</span><span> </span><span>2</span><span>)</span><span> </span><span>{</span><span>
</span><span>stopifnot</span><span>(</span><span>is.data.frame</span><span>(</span><span>df</span><span>))</span><span>
</span><span>add_text</span><span> </span><span>&lt;-</span><span> </span><span>match.arg</span><span>(</span><span>add_text</span><span>)</span><span>
</span><span>x_q</span><span> </span><span>&lt;-</span><span> </span><span>enquo</span><span>(</span><span>x</span><span>)</span><span>
</span><span>y_q</span><span> </span><span>&lt;-</span><span> </span><span>enquo</span><span>(</span><span>y</span><span>)</span><span>
</span><span>a_q</span><span> </span><span>&lt;-</span><span> </span><span>enquo</span><span>(</span><span>alpha_condition</span><span>)</span><span>
</span><span>plot_set</span><span> </span><span>&lt;-</span><span> </span><span>df</span><span> </span><span>%>%</span><span>
</span><span>add_alpha_ind</span><span>(</span><span>a_q</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>x_cat_y_cat</span><span>(</span><span>x_q</span><span>,</span><span> </span><span>y_q</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>add_freqs_col</span><span>()</span><span>
</span><span>plot_return</span><span> </span><span>&lt;-</span><span> </span><span>mm_plot</span><span>(</span><span>plot_set</span><span>,</span><span> </span><span>x_q</span><span>,</span><span> </span><span>y_q</span><span>)</span><span>
</span><span>plot_return</span><span> </span><span>&lt;-</span><span> </span><span>set_alpha</span><span>(</span><span>df</span><span>,</span><span> </span><span>plot_return</span><span>,</span><span> </span><span>a_q</span><span>)</span><span>
</span><span>if</span><span> </span><span>(</span><span>!</span><span>is.na</span><span>(</span><span>add_text</span><span>))</span><span> </span><span>{</span><span>
</span><span>plot_set</span><span>$</span><span>text</span><span> </span><span>&lt;-</span><span> </span><span>make_text_vec</span><span>(</span><span>plot_set</span><span>,</span><span> </span><span>add_text</span><span>,</span><span> </span><span>round_text</span><span>)</span><span>
</span><span>plot_set</span><span>$</span><span>freq</span><span> </span><span>&lt;-</span><span> </span><span>calculate_coordinates</span><span>(</span><span>plot_return</span><span>)</span><span>
</span><span>text_part</span><span> </span><span>&lt;-</span><span> </span><span>geom_text</span><span>(</span><span>data</span><span> </span><span>=</span><span> </span><span>plot_set</span><span>,</span><span> </span><span>aes</span><span>(</span><span>label</span><span> </span><span>=</span><span> </span><span>text</span><span>))</span><span>
</span><span>}</span><span> </span><span>else</span><span> </span><span>{</span><span>
</span><span>text_part</span><span> </span><span>&lt;-</span><span> </span><span>NULL</span><span>
</span><span>}</span><span>
</span><span>plot_return</span><span> </span><span>+</span><span> </span><span>text_part</span><span>
</span><span>}</span><span>
</span><span>add_alpha_ind</span><span> </span><span>&lt;-</span><span> </span><span>function</span><span>(</span><span>df</span><span>,</span><span> </span><span>a_q</span><span>)</span><span> </span><span>{</span><span>
</span><span>df</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>alpha_ind</span><span> </span><span>=</span><span> </span><span>!!</span><span>a_q</span><span>)</span><span>
</span><span>}</span><span>
</span><span>x_cat_y_cat</span><span> </span><span>&lt;-</span><span> </span><span>function</span><span>(</span><span>df</span><span>,</span><span> </span><span>x_q</span><span>,</span><span> </span><span>y_q</span><span>)</span><span> </span><span>{</span><span>
</span><span>df</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>x_cat</span><span> </span><span>=</span><span> </span><span>as.character</span><span>(</span><span>!!</span><span>x_q</span><span>),</span><span>
</span><span>y_cat</span><span> </span><span>=</span><span> </span><span>as.character</span><span>(</span><span>!!</span><span>y_q</span><span>))</span><span>
</span><span>}</span><span>
</span><span>add_freqs_col</span><span> </span><span>&lt;-</span><span> </span><span>function</span><span>(</span><span>df</span><span>)</span><span> </span><span>{</span><span>
</span><span>stopifnot</span><span>(</span><span>all</span><span>(</span><span>c</span><span>(</span><span>'x_cat'</span><span>,</span><span> </span><span>'y_cat'</span><span>,</span><span> </span><span>'alpha_ind'</span><span>)</span><span> </span><span>%in%</span><span> </span><span>colnames</span><span>(</span><span>df</span><span>)))</span><span>
</span><span>df</span><span> </span><span>%>%</span><span>
</span><span>group_by</span><span>(</span><span>x_cat</span><span>,</span><span> </span><span>y_cat</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>summarise</span><span>(</span><span>comb_cnt</span><span> </span><span>=</span><span> </span><span>n</span><span>(),</span><span>
</span><span>alpha_ind</span><span> </span><span>=</span><span> </span><span>as.numeric</span><span>(</span><span>sum</span><span>(</span><span>alpha_ind</span><span>)</span><span> </span><span>></span><span> </span><span>0</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>freq</span><span> </span><span>=</span><span> </span><span>comb_cnt</span><span> </span><span>/</span><span>sum</span><span>(</span><span>comb_cnt</span><span>),</span><span>
</span><span>y_cnt</span><span> </span><span>=</span><span> </span><span>sum</span><span>(</span><span>comb_cnt</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>ungroup</span><span>()</span><span>
</span><span>}</span><span>
</span><span>mm_plot</span><span> </span><span>&lt;-</span><span> </span><span>function</span><span>(</span><span>plot_set</span><span>,</span><span> </span><span>x_q</span><span>,</span><span> </span><span>y_q</span><span>)</span><span> </span><span>{</span><span>
</span><span>plot_set</span><span> </span><span>%>%</span><span>
</span><span>ggplot</span><span>(</span><span>aes</span><span>(</span><span>x_cat</span><span>,</span><span> </span><span>freq</span><span>,</span><span> </span><span>width</span><span> </span><span>=</span><span> </span><span>y_cnt</span><span>,</span><span> </span><span>fill</span><span> </span><span>=</span><span> </span><span>y_cat</span><span>,</span><span> </span><span>alpha</span><span> </span><span>=</span><span> </span><span>alpha_ind</span><span>))</span><span> </span><span>+</span><span>
</span><span>geom_bar</span><span>(</span><span>stat</span><span> </span><span>=</span><span> </span><span>&quot;identity&quot;</span><span>,</span><span> </span><span>position</span><span> </span><span>=</span><span> </span><span>&quot;fill&quot;</span><span>,</span><span> </span><span>color</span><span> </span><span>=</span><span> </span><span>&quot;black&quot;</span><span>)</span><span> </span><span>+</span><span>
</span><span>facet_grid</span><span>(</span><span>~</span><span>x_cat</span><span>,</span><span> </span><span>scales</span><span> </span><span>=</span><span> </span><span>&quot;free_x&quot;</span><span>,</span><span> </span><span>space</span><span> </span><span>=</span><span> </span><span>&quot;free_x&quot;</span><span>,</span><span>
</span><span>switch</span><span> </span><span>=</span><span> </span><span>&quot;x&quot;</span><span>)</span><span> </span><span>+</span><span>
</span><span>theme</span><span>(</span><span>
</span><span>axis.text.x</span><span> </span><span>=</span><span> </span><span>element_blank</span><span>(),</span><span>
</span><span>axis.ticks.x</span><span> </span><span>=</span><span> </span><span>element_blank</span><span>(),</span><span>
</span><span>panel.spacing</span><span> </span><span>=</span><span> </span><span>unit</span><span>(</span><span>0.1</span><span>,</span><span> </span><span>&quot;lines&quot;</span><span>),</span><span>
</span><span>panel.grid.major</span><span> </span><span>=</span><span> </span><span>element_blank</span><span>(),</span><span>
</span><span>panel.grid.minor</span><span> </span><span>=</span><span> </span><span>element_blank</span><span>(),</span><span>
</span><span>panel.background</span><span> </span><span>=</span><span> </span><span>element_blank</span><span>(),</span><span>
</span><span>strip.background</span><span> </span><span>=</span><span> </span><span>element_blank</span><span>()</span><span>
</span><span>)</span><span> </span><span>+</span><span>
</span><span>guides</span><span>(</span><span>alpha</span><span> </span><span>=</span><span> </span><span>FALSE</span><span>)</span><span> </span><span>+</span><span>
</span><span>labs</span><span>(</span><span>fill</span><span> </span><span>=</span><span> </span><span>quo_name</span><span>(</span><span>y_q</span><span>))</span><span> </span><span>+</span><span>
</span><span>xlab</span><span>(</span><span>quo_name</span><span>(</span><span>x_q</span><span>))</span><span>
</span><span>}</span><span>
</span><span>set_alpha</span><span> </span><span>&lt;-</span><span> </span><span>function</span><span>(</span><span>df</span><span>,</span><span> </span><span>plot_return</span><span>,</span><span> </span><span>a_q</span><span>)</span><span> </span><span>{</span><span>
</span><span>if</span><span> </span><span>(</span><span>mutate</span><span>(</span><span>df</span><span>,</span><span> </span><span>!!</span><span>a_q</span><span>)</span><span> </span><span>%>%</span><span> </span><span>pull</span><span>()</span><span> </span><span>%>%</span><span>
</span><span>unique</span><span>()</span><span> </span><span>%>%</span><span> </span><span>length</span><span>()</span><span> </span><span>%>%</span><span> </span><span>`==`</span><span>(</span><span>1</span><span>))</span><span> </span><span>{</span><span>
</span><span>plot_return</span><span> </span><span>+</span><span>
</span><span>scale_alpha_continuous</span><span>(</span><span>range</span><span> </span><span>=</span><span> </span><span>c</span><span>(</span><span>1</span><span>))</span><span>
</span><span>}</span><span> </span><span>else</span><span> </span><span>{</span><span>
</span><span>plot_return</span><span> </span><span>+</span><span>
</span><span>scale_alpha_continuous</span><span>(</span><span>range</span><span> </span><span>=</span><span> </span><span>c</span><span>(</span><span>.4</span><span>,</span><span> </span><span>1</span><span>))</span><span>
</span><span>}</span><span>
</span><span>}</span><span>
</span><span>make_text_vec</span><span> </span><span>&lt;-</span><span> </span><span>function</span><span>(</span><span>plot_set</span><span>,</span><span> </span><span>add_text</span><span>,</span><span> </span><span>round_text</span><span>)</span><span> </span><span>{</span><span>
</span><span>if</span><span> </span><span>(</span><span>add_text</span><span> </span><span>==</span><span> </span><span>&quot;n&quot;</span><span>)</span><span> </span><span>return</span><span>(</span><span>get_counts</span><span>(</span><span>plot_set</span><span>))</span><span>
</span><span>text_col</span><span> </span><span>&lt;-</span><span> </span><span>get_props</span><span>(</span><span>plot_set</span><span>)</span><span>
</span><span>if</span><span> </span><span>(</span><span>add_text</span><span> </span><span>==</span><span> </span><span>&quot;perc&quot;</span><span>)</span><span> </span><span>{</span><span>
</span><span>text_col</span><span> </span><span>&lt;-</span><span> </span><span>round</span><span>(</span><span>text_col</span><span> </span><span>*</span><span> </span><span>100</span><span>,</span><span> </span><span>round_text</span><span>)</span><span>
</span><span>return</span><span>(</span><span>paste0</span><span>(</span><span>text_col</span><span>,</span><span> </span><span>&quot;%&quot;</span><span>))</span><span>
</span><span>}</span><span>
</span><span>round</span><span>(</span><span>text_col</span><span>,</span><span> </span><span>round_text</span><span>)</span><span>
</span><span>}</span><span>
</span><span>get_counts</span><span> </span><span>&lt;-</span><span> </span><span>function</span><span>(</span><span>plot_set</span><span>)</span><span> </span><span>{</span><span>
</span><span>plot_set</span><span> </span><span>%>%</span><span> </span><span>pull</span><span>(</span><span>comb_cnt</span><span>)</span><span>
</span><span>}</span><span>
</span><span>get_props</span><span> </span><span>&lt;-</span><span> </span><span>function</span><span>(</span><span>plot_set</span><span>){</span><span>
</span><span>plot_set</span><span> </span><span>%>%</span><span>
</span><span>mutate</span><span>(</span><span>text_col</span><span> </span><span>=</span><span> </span><span>comb_cnt</span><span> </span><span>/</span><span> </span><span>sum</span><span>(</span><span>plot_set</span><span>$</span><span>comb_cnt</span><span>))</span><span> </span><span>%>%</span><span>
</span><span>pull</span><span>()</span><span>
</span><span>}</span><span>
</span><span>calculate_coordinates</span><span> </span><span>&lt;-</span><span> </span><span>function</span><span>(</span><span>plot_return</span><span>)</span><span> </span><span>{</span><span>
</span><span>ggplot_build</span><span>(</span><span>plot_return</span><span>)</span><span>$</span><span>data</span><span>[[</span><span>1</span><span>]]</span><span> </span><span>%>%</span><span>
</span><span>split</span><span>(</span><span>.</span><span>$</span><span>PANEL</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>map</span><span>(</span><span>y_in_the_middle</span><span>)</span><span> </span><span>%>%</span><span>
</span><span>unlist</span><span>()</span><span>
</span><span>}</span><span>
</span><span>y_in_the_middle</span><span> </span><span>&lt;-</span><span> </span><span>function</span><span>(</span><span>x</span><span>)</span><span> </span><span>{</span><span>
</span><span>y_pos</span><span> </span><span>&lt;-</span><span> </span><span>c</span><span>(</span><span>0</span><span>,</span><span> </span><span>x</span><span>$</span><span>y</span><span>)</span><span>
</span><span>rev</span><span>(</span><span>y_pos</span><span>[</span><span>-</span><span>length</span><span>(</span><span>y_pos</span><span>)]</span><span> </span><span>+</span><span> </span><span>(</span><span>y_pos</span><span> </span><span>%>%</span><span> </span><span>diff</span><span>())</span><span> </span><span>/</span><span> </span><span>2</span><span>)</span><span>
</span><span>}</span><span>
</span></code></pre>
</div>
</div>
	<p>
<div>
<div>To <strong>leave a comment</strong> for the author, please follow the link and comment on their blog: <strong><a href="https://edwinth.github.io/blog/ggmm/"> That’s so Random</a></strong>.</div>
<hr>
<a rel="nofollow" href="https://www.r-bloggers.com/">R-bloggers.com</a> offers <strong><a rel="nofollow" href="https://feedburner.google.com/fb/a/mailverify?uri=RBloggers">daily e-mail updates</a></strong> about <a rel="nofollow" href="https://www.r-project.org/" title="The R Project for Statistical Computing">R</a> news and <a rel="nofollow" href="https://www.r-bloggers.com/search/tutorial" title="R tutorials">tutorials</a> on topics such as: <a rel="nofollow" href="https://www.r-bloggers.com/search/data%20science" title="Data science">Data science</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/Big%20Data" title="Big Data">Big Data, <a rel="nofollow" href="https://www.r-users.com/" title="R jobs">R jobs</a>, visualization (<a rel="nofollow" href="https://www.r-bloggers.com/search/ggplot2" title="ggplot and ggplot2 tutorials">ggplot2</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/boxplot" title="Boxplots using lattice and ggplot2 tutorials">Boxplots</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/map" title="Maps and gis">maps</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/animation" title="Animation in R">animation</a>), programming (<a rel="nofollow" href="https://www.r-bloggers.com/search/RStudio" title="RStudio IDE for R">RStudio</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/sweave" title="Sweave and literate programming">Sweave</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/LaTeX" title="LaTeX in R">LaTeX</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/SQL" title="SQL and databases">SQL</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/eclipse" title="Eclipse IDE for R">Eclipse</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/git" title="git and github, Version Control System">git</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/hadoop" title="Large data in R using Hadoop">hadoop</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/Web+Scraping" title="Web Scraping of google, facebook, yahoo, twitter and more using R">Web Scraping</a>) statistics (<a rel="nofollow" href="https://www.r-bloggers.com/search/regression" title="Regressions and ANOVA analysis tutorials">regression</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/PCA" title="principal component analysis tutorial">PCA</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/time+series" title="Time series">time series</a>, <a rel="nofollow" href="https://www.r-bloggers.com/search/trading" title="finance trading">trading</a>) and more...
<img width="1" alt="" src="http://feeds.feedburner.com/~r/RBloggers/~4/kwZtUv1edFM" height="1"></a></div>