Mapping to a ‘t'(map)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
tmap <- Easy & Interactive -
More maps of the Highlands?
Yep, same as last time, but no need to install dev versions of anything, we can get awesome maps courtesy of the tmap package.
Get the shapefile from the last post
<span class="n">library</span><span class="p">(</span><span class="n">tmap</span><span class="p">)</span>
<span class="n">library</span><span class="p">(</span><span class="n">tmaptools</span><span class="p">)</span>
<span class="n">library</span><span class="p">(</span><span class="n">viridis</span><span class="p">)</span>
<span class="n">scot</span> <span class="o"><-</span> <span class="n">read_shape</span><span class="p">(</span><span class="s2">"SG_SIMD_2016.shp"</span><span class="p">,</span> <span class="n">as.sf</span> <span class="o">=</span> <span class="n">TRUE</span><span class="p">)</span>
<span class="n">highland</span> <span class="o"><-</span> <span class="p">(</span><span class="n">scot</span><span class="p">[</span><span class="n">scot</span><span class="o">$</span><span class="n">LAName</span><span class="o">==</span><span class="s2">"Highland"</span><span class="p">,</span> <span class="p">])</span>
<span class="c1">#replicate plot from previous blog post:
</span>
<span class="n">quint</span> <span class="o"><-</span> <span class="n">tm_shape</span><span class="p">(</span><span class="n">highland</span><span class="p">)</span> <span class="o">+</span>
<span class="n">tm_fill</span><span class="p">(</span><span class="n">col</span> <span class="o">=</span> <span class="s2">"Quintile"</span><span class="p">,</span>
<span class="n">palette</span> <span class="o">=</span> <span class="n">viridis</span><span class="p">(</span><span class="n">n</span><span class="o">=</span><span class="m">5</span><span class="p">,</span> <span class="n">direction</span> <span class="o">=</span> <span class="m">-1</span><span class="p">,</span><span class="n">option</span> <span class="o">=</span> <span class="s2">"C"</span><span class="p">),</span>
<span class="n">fill.title</span> <span class="o">=</span> <span class="s2">"Quintile"</span><span class="p">,</span>
<span class="n">title</span> <span class="o">=</span> <span class="s2">"SIMD 2016 - Highland Council Area by Quintile"</span><span class="p">)</span>
<span class="n">quint</span> <span class="c1"># plot
</span>
<span class="n">ttm</span><span class="p">()</span> <span class="c1">#switch between static and interactive - this will use interactive
</span><span class="n">quint</span> <span class="c1"># or use last_map()
# in R Studio you will find leaflet map in your Viewer tab
</span>
<span class="n">ttm</span><span class="p">()</span> <span class="c1"># return to plotting
</span>
The results:
One really nice thing is that because the polygons don’t have outlines, the DataZones that are really densely packed still render nicely – so no ‘missing’ areas.
A static image of the leaflet map:
Here I take the rank for all the Highland data zones, and the overall SIMD rank, and create a small multiple
<span class="n">small_mult</span><span class="o"><-</span> <span class="n">tm_shape</span><span class="p">(</span><span class="n">highland</span><span class="p">)</span> <span class="o">+</span>
<span class="n">tm_fill</span><span class="p">(</span><span class="n">col</span> <span class="o">=</span> <span class="n">c</span><span class="p">(</span><span class="s2">"IncRank"</span><span class="p">,</span><span class="s2">"EmpRank"</span><span class="p">,</span><span class="s2">"HlthRank"</span><span class="p">,</span><span class="s2">"EduRank"</span><span class="p">,</span>
<span class="s2">"GAccRank"</span><span class="p">,</span><span class="s2">"CrimeRank"</span><span class="p">,</span><span class="s2">"HouseRank"</span><span class="p">,</span><span class="s2">"Rank"</span><span class="p">),</span>
<span class="n">palette</span> <span class="o">=</span> <span class="n">viridis</span><span class="p">(</span><span class="n">n</span><span class="o">=</span><span class="m">5</span><span class="p">,</span> <span class="n">direction</span> <span class="o">=</span> <span class="m">-1</span><span class="p">,</span><span class="n">option</span> <span class="o">=</span> <span class="s2">"C"</span><span class="p">),</span>
<span class="n">title</span><span class="o">=</span><span class="n">c</span><span class="p">(</span><span class="s2">"Income Rank"</span><span class="p">,</span> <span class="s2">"Employment Rank"</span><span class="p">,</span><span class="s2">"Health Rank"</span><span class="p">,</span><span class="s2">"Education Rank"</span><span class="p">,</span>
<span class="s2">"General Access Rank"</span><span class="p">,</span><span class="s2">"Crime Rank"</span><span class="p">,</span> <span class="s2">"Housing Rank"</span><span class="p">,</span><span class="s2">"Overall Rank"</span><span class="p">))</span>
<span class="n">small_mult</span>
Let’s take a look at Scotland as a whole, as I assume everyone’s pretty bored of the Highlands by now:
<span class="c1">#try a map of scotland
</span><span class="n">scotplot</span> <span class="o"><-</span> <span class="n">tm_shape</span><span class="p">(</span><span class="n">scot</span><span class="p">)</span> <span class="o">+</span>
<span class="n">tm_fill</span><span class="p">(</span><span class="n">col</span> <span class="o">=</span> <span class="s2">"Rank"</span><span class="p">,</span>
<span class="n">palette</span> <span class="o">=</span> <span class="n">viridis</span><span class="p">(</span><span class="n">n</span><span class="o">=</span><span class="m">5</span><span class="p">,</span> <span class="n">direction</span> <span class="o">=</span> <span class="m">-1</span><span class="p">,</span><span class="n">option</span> <span class="o">=</span> <span class="s2">"C"</span><span class="p">),</span>
<span class="n">fill.title</span> <span class="o">=</span> <span class="s2">"Overall Rank"</span><span class="p">,</span>
<span class="n">title</span> <span class="o">=</span> <span class="s2">"Overall-Rank"</span><span class="p">)</span>
<span class="n">scotplot</span> <span class="c1"># bit of a monster
</span>
With the interactive plot, we can really appreciate the density of these datazones in the Central belt.
Here, I’ve zoomed in a bit on the region around Glasgow, and then zoomed in some more:
I couldn’t figure out how to host the leaflet map within the page (Jekyll / Github / Leaflet experts please feel free to educate me on that 🙂 ) but, given the size of the file, I very much doubt I could have uploaded it to Github anyway.
Thanks to Roger Bivand (@RogerBivand) for getting in touch and pointing me towards the tmap package! It’s really good fun and an easy way to get interactive maps up and running.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.