<rss version="2.0" xmlns:atom="//www.w3.org/2005/Atom">
  <channel>
    <title>Posts on StatnMap</title>
    <link>https://statnmap.com/post/</link>
    <description>Recent content in Posts on StatnMap</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <copyright>Powered by [Hugo](//gohugo.io). Original theme by [PPOffice](http://github.com/ppoffice). Modified and multilingual by [Sébastien Rochette](https://github.com/statnmap/hugo-statnmap-theme/).</copyright>
    <lastBuildDate>Mon, 27 Jan 2025 00:00:00 +0000</lastBuildDate>
    
        <atom:link href="https://statnmap.com/post/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Creating a Node.js Website with GitHub Copilot Workspace Using Best Development Practices in R</title>
      <link>https://statnmap.com/2025-01-27-creating-a-website-in-node-js-with-github-copilot-workspace/</link>
      <pubDate>Mon, 27 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>https://statnmap.com/2025-01-27-creating-a-website-in-node-js-with-github-copilot-workspace/</guid>
      <description>&lt;p&gt;As a developer primarily focused on &lt;strong&gt;R&lt;/strong&gt;, I strive to follow good development practices: writing clear &lt;strong&gt;user documentation&lt;/strong&gt; with articles and examples; creating robust &lt;strong&gt;tests&lt;/strong&gt;; and automating checks and deployments with &lt;strong&gt;CI/CD workflows&lt;/strong&gt;. These habits have allowed me to build reliable and maintainable projects, but I asked myself: &lt;strong&gt;Are these practices transferable if I venture into a different ecosystem, such as Node.js?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To answer this question, I set myself a personal challenge: &lt;strong&gt;create a fully functional website using Node.js and JavaScript&lt;/strong&gt;, while taking the opportunity to test &lt;strong&gt;&lt;a href=&#34;https://copilot-workspace.githubnext.com/&#34;&gt;GitHub Copilot Workspace&lt;/a&gt;&lt;/strong&gt; as my primary development assistant. My goal was to see if Copilot could guide me from start to finish, assuming I knew nothing. I also wanted to test the hypothesis that even without deep expertise in a language or framework, success is achievable by relying on solid practices and the right tools.&lt;/p&gt;
      &lt;br/&gt;&lt;p&gt;See more: &lt;a href=&#34;https://statnmap.com/2025-01-27-creating-a-website-in-node-js-with-github-copilot-workspace/&#34;&gt;Creating a Node.js Website with GitHub Copilot Workspace Using Best Development Practices in R&lt;/a&gt;&lt;/p&gt;
      </description>
    </item>
    
    <item>
      <title>Spatial correlation between rasters using &#39;terra&#39;</title>
      <link>https://statnmap.com/2024-12-06-spatial-correlation-between-rasters-using-terra/</link>
      <pubDate>Fri, 06 Dec 2024 00:00:00 +0000</pubDate>
      
      <guid>https://statnmap.com/2024-12-06-spatial-correlation-between-rasters-using-terra/</guid>
      <description>&lt;div id=&#34;correlation-between-rasters&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Correlation between rasters&lt;/h1&gt;
&lt;p&gt;In this blog article, I propose a way to look at the spatial repartition of correlation between two rasters. This is an update of a blog post I wrote in 2018 : &lt;a href=&#34;https://statnmap.com/2018-01-27-spatial-correlation-between-rasters/&#34;&gt;Spatial correlation between rasters&lt;/a&gt;. The main difference is that I use the new {terra} package instead of the old {raster} package. The {terra} package is a modern package for spatial data manipulation and replaces the now-retired {raster} package. I also use {tmap} instead of {ggplot2} for map visualizations. Last but not least, the examples are reproducible and the code is available on my &lt;a href=&#34;https://github.com/statnmap/blog_tips&#34;&gt;Blog tips github repository&lt;/a&gt;.&lt;/p&gt;
      &lt;br/&gt;&lt;p&gt;See more: &lt;a href=&#34;https://statnmap.com/2024-12-06-spatial-correlation-between-rasters-using-terra/&#34;&gt;Spatial correlation between rasters using &#39;terra&#39;&lt;/a&gt;&lt;/p&gt;
      </description>
    </item>
    
    <item>
      <title>How to debug your package in a {rhub} fedora container before sending to CRAN?</title>
      <link>https://statnmap.com/2023-06-20-how-to-debug-your-package-in-a-rhub-fedora-container-before-sending-to-cran/</link>
      <pubDate>Tue, 20 Jun 2023 00:00:00 +0000</pubDate>
      
      <guid>https://statnmap.com/2023-06-20-how-to-debug-your-package-in-a-rhub-fedora-container-before-sending-to-cran/</guid>
      <description>&lt;p&gt;&lt;strong&gt;It is not the first time I present how to debug on an other platform before sending your package to CRAN. This time, before submission {checkhelper} failed on ‘fedora’ image provided by {rhub}. How to debug your package using this platform when your using an other OS? Let’s speak about docker and VSCode…&lt;/strong&gt;&lt;/p&gt;
&lt;div id=&#34;why-another-debug-blog-post&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Why another debug blog post?&lt;/h2&gt;
&lt;p&gt;In a previous blog post, I presented &lt;a href=&#34;https://statnmap.com/2021-07-29-debug-your-package-that-failed-on-solaris-and-others-on-cran-with-rhub/&#34;&gt;“Debug your package that failed on CRAN with {rhub}”&lt;/a&gt;. Here, this is exactly the same blog post, because, you know, I do not read my own blog posts, and I face and fix the same errors over and over…&lt;br /&gt;
But, I am not as stupid as I seem to be. Indeed, I could not reproduce the same steps because today, the &lt;code&gt;rhub::local_check_linux()&lt;/code&gt; failed to work as expected. Maybe my local installation of docker is now different or something changed in the images… I don’t know.&lt;/p&gt;
      &lt;br/&gt;&lt;p&gt;See more: &lt;a href=&#34;https://statnmap.com/2023-06-20-how-to-debug-your-package-in-a-rhub-fedora-container-before-sending-to-cran/&#34;&gt;How to debug your package in a {rhub} fedora container before sending to CRAN?&lt;/a&gt;&lt;/p&gt;
      </description>
    </item>
    
    <item>
      <title>Share your R work following good dev practices from a single notebook</title>
      <link>https://statnmap.com/2022-10-28-share-your-r-work-following-good-dev-practices-from-a-single-notebook/</link>
      <pubDate>Fri, 28 Oct 2022 00:00:00 +0000</pubDate>
      
      <guid>https://statnmap.com/2022-10-28-share-your-r-work-following-good-dev-practices-from-a-single-notebook/</guid>
      <description>&lt;p&gt;&lt;strong&gt;You write R scripts and you would like to share them with other users, in a sustainable and maintainable way. You already write your code in a notebook (Rmarkdown or Quarto) and share its HTML output. You would like to document the chunks, and make this documentation visible in a separate HTML page. Writing a R package seems to be overkill and you would like to experiment good practices for an alternative. Let me show you how &lt;a href=&#34;https://thinkr-open.github.io/fusen&#34;&gt;{fusen}&lt;/a&gt; can help present and share R work following good development practices like doc and test, while starting from a unique place that you already know: the Rmarkdown (or Quarto) notebook.&lt;/strong&gt;&lt;/p&gt;
      &lt;br/&gt;&lt;p&gt;See more: &lt;a href=&#34;https://statnmap.com/2022-10-28-share-your-r-work-following-good-dev-practices-from-a-single-notebook/&#34;&gt;Share your R work following good dev practices from a single notebook&lt;/a&gt;&lt;/p&gt;
      </description>
    </item>
    
    <item>
      <title>Add {tmap} point layer with multiple symbol border colors and width</title>
      <link>https://statnmap.com/2022-04-28-tmap-point-layer-with-multiple-symbol-border-colors-and-width/</link>
      <pubDate>Thu, 28 Apr 2022 00:00:00 +0000</pubDate>
      
      <guid>https://statnmap.com/2022-04-28-tmap-point-layer-with-multiple-symbol-border-colors-and-width/</guid>
      <description>&lt;p&gt;&lt;strong&gt;It’s been a while since my last blog post. Indeed, my free time is used to improve packages like &lt;a href=&#34;https://thinkr-open.github.io/fusen&#34;&gt;“{fusen}: Inflate your package from a simple flat Rmd”&lt;/a&gt; , &lt;a href=&#34;https://thinkr-open.github.io/attachment/&#34;&gt;“{attachment}: Tools to deal with dependencies in scripts, Rmd and packages”&lt;/a&gt; or &lt;a href=&#34;https://statnmap.github.io/gitlabr/&#34;&gt;“{gitlabr}: An R client for the GitLab API”&lt;/a&gt;. Hence, drawing some maps is not on my high priority list. But today, I had to do a little trick with {tmap} that I wanted to share.&lt;/strong&gt;&lt;/p&gt;
      &lt;br/&gt;&lt;p&gt;See more: &lt;a href=&#34;https://statnmap.com/2022-04-28-tmap-point-layer-with-multiple-symbol-border-colors-and-width/&#34;&gt;Add {tmap} point layer with multiple symbol border colors and width&lt;/a&gt;&lt;/p&gt;
      </description>
    </item>
    
    <item>
      <title>I do not have time (to practice)</title>
      <link>https://statnmap.com/2021-11-27-i-do-not-have-time-to-practice/</link>
      <pubDate>Sun, 28 Nov 2021 00:00:00 +0000</pubDate>
      
      <guid>https://statnmap.com/2021-11-27-i-do-not-have-time-to-practice/</guid>
      <description>&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;&lt;strong&gt;I’d really like to be able to do this, and I know I will benefit from it, but I do not have time or I did not find time to try it…&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;How much time do you plan to take to read this blog post? Will you read until the end? Completely or the headlines only?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you do not have time now, please do not bookmark me. Set a 10 minutes time slot in your agenda to really read it next week.&lt;/p&gt;
      &lt;br/&gt;&lt;p&gt;See more: &lt;a href=&#34;https://statnmap.com/2021-11-27-i-do-not-have-time-to-practice/&#34;&gt;I do not have time (to practice)&lt;/a&gt;&lt;/p&gt;
      </description>
    </item>
    
    <item>
      <title>How not to be lost with VSCode when coming from RStudio?</title>
      <link>https://statnmap.com/2021-10-09-how-not-to-be-lost-with-vscode-when-coming-from-rstudio/</link>
      <pubDate>Sat, 09 Oct 2021 00:00:00 +0000</pubDate>
      
      <guid>https://statnmap.com/2021-10-09-how-not-to-be-lost-with-vscode-when-coming-from-rstudio/</guid>
      <description>&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;&lt;strong&gt;VSCode is popular these days in the #rstats community. I know how to find everything I need in RStudio and I have my small habits, then how to find my way with VSCode? Here, I present the answers to my first exploration in using VSCode as a R user.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You will see that there are a few missing functionnalities and shortcuts when you start using VSCode.
I know I can add some more plugins and my own keybindings, but here I want to show what exists when you start, without too much configuration.
Indeed, when there is too much personal configuration, the environment is hardly reproducible for other users to test it.
But there are already many things possible with VSCode, so let’s explore this!&lt;/p&gt;
      &lt;br/&gt;&lt;p&gt;See more: &lt;a href=&#34;https://statnmap.com/2021-10-09-how-not-to-be-lost-with-vscode-when-coming-from-rstudio/&#34;&gt;How not to be lost with VSCode when coming from RStudio?&lt;/a&gt;&lt;/p&gt;
      </description>
    </item>
    
    <item>
      <title>Debug your package that failed on CRAN with {rhub}</title>
      <link>https://statnmap.com/2021-07-29-debug-your-package-that-failed-on-solaris-and-others-on-cran-with-rhub/</link>
      <pubDate>Thu, 29 Jul 2021 00:00:00 +0000</pubDate>
      
      <guid>https://statnmap.com/2021-07-29-debug-your-package-that-failed-on-solaris-and-others-on-cran-with-rhub/</guid>
      <description>&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;div id=&#34;debug-your-package-that-failed-on-cran-with-rhub&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Debug your package that failed on CRAN with {rhub}&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;If you sent packages on CRAN, you may have encountered some fails on different operating systems configurations that you never heard about before: Solaris, debian clang, fedora gcc, … Package {rhub} allows to test your package on some of them, prior to sending to CRAN. But, how to debug directly on this infrastructure to be able to reproduce and fix the errors ?&lt;/strong&gt;&lt;/p&gt;
      &lt;br/&gt;&lt;p&gt;See more: &lt;a href=&#34;https://statnmap.com/2021-07-29-debug-your-package-that-failed-on-solaris-and-others-on-cran-with-rhub/&#34;&gt;Debug your package that failed on CRAN with {rhub}&lt;/a&gt;&lt;/p&gt;
      </description>
    </item>
    
    <item>
      <title>How to debug your package on Win-Builder before sending to CRAN?</title>
      <link>https://statnmap.com/2021-04-11-how-to-debug-on-win-builder-before-sending-to-cran/</link>
      <pubDate>Sun, 11 Apr 2021 00:00:00 +0000</pubDate>
      
      <guid>https://statnmap.com/2021-04-11-how-to-debug-on-win-builder-before-sending-to-cran/</guid>
      <description>&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;&lt;strong&gt;CRAN submission can be difficult as your package is checked on multiple OS and R versions that you may not be able to check yourself locally. Thankfully, some services like {rhub} and Win-Builder prevent some unfortunate CRAN errors. But how to debug code that is run on an external server, without direct access to it, like Win-Builder? Use the power of unit tests…&lt;/strong&gt;&lt;/p&gt;
&lt;div id=&#34;tldr&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;To debug your code on Win-Builder, you can create unit tests that save outputs inside the “testthat/” directory. Save all meaningful, intermediate outputs that you want to open or run locally after download. Compress these files in a zip file using &lt;code&gt;utils::zip()&lt;/code&gt; inside this same directory. Then, on the Win-Builder page dedicated to your package, you will be able to download it and explore it locally.&lt;/p&gt;
      &lt;br/&gt;&lt;p&gt;See more: &lt;a href=&#34;https://statnmap.com/2021-04-11-how-to-debug-on-win-builder-before-sending-to-cran/&#34;&gt;How to debug your package on Win-Builder before sending to CRAN?&lt;/a&gt;&lt;/p&gt;
      </description>
    </item>
    
    <item>
      <title>Date-time Conversion in R with format and strptime</title>
      <link>https://statnmap.com/2020-09-10-date-time-conversion-in-r-with-format-and-strptime/</link>
      <pubDate>Thu, 10 Sep 2020 00:00:00 +0000</pubDate>
      
      <guid>https://statnmap.com/2020-09-10-date-time-conversion-in-r-with-format-and-strptime/</guid>
      <description>&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;&lt;strong&gt;Each time I want to extract or show a specific attribute of a date or a time, I am lost in the documentation. What letter do I need to use in &lt;code&gt;format()&lt;/code&gt; to get the name of the day written in full, in my language, from the current date? Is it “%Y %m %d”, “%a %b %d”, …? &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So let’s keep it short this time!&lt;/p&gt;
&lt;div id=&#34;create-a-table-of-datetime-conversion-using-format-and-specific-locale&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Create a table of datetime conversion using &lt;code&gt;format&lt;/code&gt; and specific locale&lt;/h2&gt;
&lt;p&gt;At the time I run this script, we are eaxctly:&lt;/p&gt;
      &lt;br/&gt;&lt;p&gt;See more: &lt;a href=&#34;https://statnmap.com/2020-09-10-date-time-conversion-in-r-with-format-and-strptime/&#34;&gt;Date-time Conversion in R with format and strptime&lt;/a&gt;&lt;/p&gt;
      </description>
    </item>
    
    <item>
      <title>Buffer areas for nearest neighbours or national marine areas delineation</title>
      <link>https://statnmap.com/2020-07-31-buffer-area-for-nearest-neighbour/</link>
      <pubDate>Wed, 19 Aug 2020 00:00:00 +0000</pubDate>
      
      <guid>https://statnmap.com/2020-07-31-buffer-area-for-nearest-neighbour/</guid>
      <description>&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;
&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/htmlwidgets/htmlwidgets.js&#34;&gt;&lt;/script&gt;
&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/jquery/jquery.min.js&#34;&gt;&lt;/script&gt;
&lt;link href=&#34;https://statnmap.com/rmarkdown-libs/leaflet/leaflet.css&#34; rel=&#34;stylesheet&#34; /&gt;
&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/leaflet/leaflet.js&#34;&gt;&lt;/script&gt;
&lt;link href=&#34;https://statnmap.com/rmarkdown-libs/leafletfix/leafletfix.css&#34; rel=&#34;stylesheet&#34; /&gt;
&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/proj4/proj4.min.js&#34;&gt;&lt;/script&gt;
&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/Proj4Leaflet/proj4leaflet.js&#34;&gt;&lt;/script&gt;
&lt;link href=&#34;https://statnmap.com/rmarkdown-libs/rstudio_leaflet/rstudio_leaflet.css&#34; rel=&#34;stylesheet&#34; /&gt;
&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/leaflet-binding/leaflet.js&#34;&gt;&lt;/script&gt;
&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/leaflet-providers/leaflet-providers_1.9.0.js&#34;&gt;&lt;/script&gt;
&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/leaflet-providers-plugin/leaflet-providers-plugin.js&#34;&gt;&lt;/script&gt;
&lt;link href=&#34;https://statnmap.com/rmarkdown-libs/HomeButton/home-button.css&#34; rel=&#34;stylesheet&#34; /&gt;
&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/HomeButton/home-button.js&#34;&gt;&lt;/script&gt;
&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/HomeButton/easy-button-src.min.js&#34;&gt;&lt;/script&gt;
&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/clipboard/setClipboardText.js&#34;&gt;&lt;/script&gt;
&lt;link href=&#34;https://statnmap.com/rmarkdown-libs/mapviewCSS/mapview-popup.css&#34; rel=&#34;stylesheet&#34; /&gt;
&lt;link href=&#34;https://statnmap.com/rmarkdown-libs/mapviewCSS/mapview.css&#34; rel=&#34;stylesheet&#34; /&gt;


&lt;p&gt;&lt;strong&gt;A few weeks ago, Christina Buelow asked on Twitter how she could create the polygons of coastal waters using the land polygons, and making sure there is no overlap in buffer areas. This would make it possible to know which land area is closest to any place in the sea. Let’s explore what solution emerged from the discussions.&lt;/strong&gt;&lt;/p&gt;
&lt;div id=&#34;tldr&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;TL;DR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Install &lt;a href=&#34;https://github.com/statnmap/cartomisc&#34;&gt;{cartomisc} package&lt;/a&gt; from GitHub&lt;/li&gt;
&lt;li&gt;Download some data&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# Define where to save the dataset
extraWD &amp;lt;- tempdir()
# Get some data available to anyone
if (!file.exists(file.path(extraWD, &amp;quot;departement.zip&amp;quot;))) {
  githubURL &amp;lt;- &amp;quot;https://github.com/statnmap/blog_tips/raw/master/2018-07-14-introduction-to-mapping-with-sf-and-co/data/departement.zip&amp;quot;
  download.file(githubURL, file.path(extraWD, &amp;quot;departement.zip&amp;quot;))
  unzip(file.path(extraWD, &amp;quot;departement.zip&amp;quot;), exdir = extraWD)
}&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Reduce the dataset to a small region&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;library(sf)
# remotes::install_github(&amp;quot;statnmap/cartomisc&amp;quot;)
library(cartomisc)
library(dplyr)
library(ggplot2)

departements_l93 &amp;lt;- read_sf(dsn = extraWD, layer = &amp;quot;DEPARTEMENT&amp;quot;)

# Reduce dataset
bretagne_l93 &amp;lt;- departements_l93 %&amp;gt;%
  filter(NOM_REG == &amp;quot;BRETAGNE&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Calculate the regional buffer area using &lt;code&gt;regional_seas()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;bretagne_regional_2km_l93 &amp;lt;- regional_seas(
  x = bretagne_l93,
  group = &amp;quot;NOM_DEPT&amp;quot;,
  dist = units::set_units(30, km), # buffer distance
  density = units::set_units(0.5, 1/km) # density of points (the higher, the more precise the region attribution)
)&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Plot the data&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;ggplot() +
  geom_sf(data = bretagne_regional_2km_l93,
          aes(colour = NOM_DEPT, fill = NOM_DEPT),
          alpha = 0.25) +
  geom_sf(data = bretagne_l93,
          aes(fill = NOM_DEPT),
          colour = &amp;quot;grey20&amp;quot;,
          alpha = 0.5) +
  scale_fill_viridis_d() +
  scale_color_viridis_d() +
  theme_bw()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;https://statnmap.com/post/2020-07-31-buffer-area-for-nearest-neighbour_files/figure-html/buffer-nearest-en04-1.jpeg&#34; width=&#34;90%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
      &lt;br/&gt;&lt;p&gt;See more: &lt;a href=&#34;https://statnmap.com/2020-07-31-buffer-area-for-nearest-neighbour/&#34;&gt;Buffer areas for nearest neighbours or national marine areas delineation&lt;/a&gt;&lt;/p&gt;
      </description>
    </item>
    
    <item>
      <title>Find most retweeted tweets of the #rspatial bot</title>
      <link>https://statnmap.com/2020-05-10-find-most-retweeted-tweets-of-the-rspatial-bot/</link>
      <pubDate>Sat, 16 May 2020 00:00:00 +0000</pubDate>
      
      <guid>https://statnmap.com/2020-05-10-find-most-retweeted-tweets-of-the-rspatial-bot/</guid>
      <description>&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;&lt;strong&gt;Bots that retweet #rspatial and #BioImageAnalysis tweets are working well. It is now time to add a little functionnality with the best retweeted tweet of the month, a function added to {tweetrbot} package.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Last summer, with &lt;a href=&#34;https://marionlouveaux.fr&#34;&gt;Marion Louveaux&lt;/a&gt;, we built two Twitter bots that retweet &lt;a href=&#34;https://twitter.com/talk_rspatial&#34;&gt;#rspatial&lt;/a&gt; and &lt;a href=&#34;https://twitter.com/Talk_BioImg&#34;&gt;#BioImageAnalysis&lt;/a&gt; tweets. That’s our way to collect news of our preferred communities. If you are interested, I presented in this blog post &lt;a href=&#34;https://statnmap.com/2019-08-30-create-a-twitter-bot-on-a-raspberry-pi-3-using-r&#34;&gt;how to “Create [such] a twitter bot on a Raspberry Pi 3 using R”&lt;/a&gt;
I especially created package &lt;a href=&#34;https://statnmap.github.io/tweetrbot/&#34;&gt;{tweetrbot}&lt;/a&gt; so that my Raspberry Pi can take care of this retweet task. Today I added a small functionnality that will tweet a monthly summary.&lt;/p&gt;
      &lt;br/&gt;&lt;p&gt;See more: &lt;a href=&#34;https://statnmap.com/2020-05-10-find-most-retweeted-tweets-of-the-rspatial-bot/&#34;&gt;Find most retweeted tweets of the #rspatial bot&lt;/a&gt;&lt;/p&gt;
      </description>
    </item>
    
    <item>
      <title>#30DayMapChallenge: 30 days building maps (3) - Earth is spherical</title>
      <link>https://statnmap.com/2019-11-22-30daymapchallenge-building-maps-3-earth-is-sphere/</link>
      <pubDate>Fri, 22 Nov 2019 00:00:00 +0000</pubDate>
      
      <guid>https://statnmap.com/2019-11-22-30daymapchallenge-building-maps-3-earth-is-sphere/</guid>
      <description>&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;&lt;strong&gt;The #30DayMapChallenge was initiated by &lt;a href=&#34;https://twitter.com/tjukanov&#34;&gt;Topi Tjukanov&lt;/a&gt; on Twitter. This is open to anyone who would like to show a map, whatever the software is. In this blog post, I will show maps made with R. I add constraints to myself for fun. This week, I will create maps that remind map makers that Earth is not flat…&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This follows previous weeks blog post:
- &lt;a href=&#34;2019-11-08-30daymapchallenge-building-maps-1&#34;&gt;#30DayMapChallenge: 30 days building maps (1) - ggplot2&lt;/a&gt;
- &lt;a href=&#34;2019-11-08-30daymapchallenge-building-maps-2-tmap&#34;&gt;#30DayMapChallenge: 30 days building maps (2) - tmap&lt;/a&gt;&lt;/p&gt;
      &lt;br/&gt;&lt;p&gt;See more: &lt;a href=&#34;https://statnmap.com/2019-11-22-30daymapchallenge-building-maps-3-earth-is-sphere/&#34;&gt;#30DayMapChallenge: 30 days building maps (3) - Earth is spherical&lt;/a&gt;&lt;/p&gt;
      </description>
    </item>
    
    <item>
      <title>#30DayMapChallenge: 30 days building maps (2) - tmap</title>
      <link>https://statnmap.com/2019-11-15-30daymapchallenge-building-maps-2-tmap/</link>
      <pubDate>Fri, 15 Nov 2019 00:00:00 +0000</pubDate>
      
      <guid>https://statnmap.com/2019-11-15-30daymapchallenge-building-maps-2-tmap/</guid>
      <description>&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;&lt;strong&gt;The #30DayMapChallenge was initiated by &lt;a href=&#34;https://twitter.com/tjukanov&#34;&gt;Topi Tjukanov&lt;/a&gt; on Twitter. This is open to anyone who would like to show a map, whatever the software is. In this blog post, I will show maps made with R. I add constraints to myself for fun. This week, I will use {tmap} to create maps.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This follows previous week blog post: &lt;a href=&#34;2019-11-08-30daymapchallenge-building-maps-1&#34;&gt;#30DayMapChallenge: 30 days building maps (1) - ggplot2&lt;/a&gt;&lt;/p&gt;
&lt;div id=&#34;packages&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Packages&lt;/h2&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;library(dplyr)
library(sf)
library(raster)
library(readr)
library(tmap)
library(xml2)
library(purrr)
# remotes::install_github(&amp;quot;tylermorganwall/rayshader&amp;quot;)
library(rayshader)

## Customize
my_blue &amp;lt;- &amp;quot;#1e73be&amp;quot;
# Test for font family
# extrafont::font_import(prompt = FALSE)
font &amp;lt;- extrafont::choose_font(c(&amp;quot;Nanum Pen&amp;quot;, &amp;quot;Lato&amp;quot;, &amp;quot;sans&amp;quot;))&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;data-transform-france-into-a-regular-grid-of-hexagons&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Data: Transform France into a regular grid of hexagons&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Get World data in {tmap} package&lt;/li&gt;
&lt;li&gt;Get France shapefile&lt;/li&gt;
&lt;li&gt;Transform France into a regular grid of hexagons&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# extraWD &amp;lt;- &amp;quot;.&amp;quot; # Uncomment for the script to work
data(World)
# Read shapefile &amp;quot;Departement.shp&amp;quot;
France_L93 &amp;lt;- st_read(file.path(extraWD, &amp;quot;DEPARTEMENT.shp&amp;quot;), quiet = TRUE)

# Transform as hex polygon grid
#&amp;#39; @param x a sf object
transform_to_hex &amp;lt;- function(x) {
x %&amp;gt;% 
  st_make_grid(what = &amp;quot;polygons&amp;quot;, square = FALSE,
               n = c(40, 20)) %&amp;gt;% 
  st_sf() %&amp;gt;% 
  mutate(id_hex = 1:n()) %&amp;gt;% 
  dplyr::select(id_hex, geometry)
}
France_hex &amp;lt;- transform_to_hex(France_L93)

tm_shape(France_hex) +
  tm_fill(col = my_blue) +
  tm_borders(col = &amp;quot;grey80&amp;quot;) +
  tm_legend(
    title = &amp;quot;France map transformed as hexagonal grid&amp;quot;
  )&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;https://statnmap.com/post/2019-11-15-30daymapchallenge-building-maps-2-tmap/figure-html/francehex-1.jpeg&#34; width=&#34;90%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
      &lt;br/&gt;&lt;p&gt;See more: &lt;a href=&#34;https://statnmap.com/2019-11-15-30daymapchallenge-building-maps-2-tmap/&#34;&gt;#30DayMapChallenge: 30 days building maps (2) - tmap&lt;/a&gt;&lt;/p&gt;
      </description>
    </item>
    
    <item>
      <title>#30DayMapChallenge: 30 days building maps (1) - ggplot2</title>
      <link>https://statnmap.com/2019-11-08-30daymapchallenge-building-maps-1/</link>
      <pubDate>Fri, 08 Nov 2019 00:00:00 +0000</pubDate>
      
      <guid>https://statnmap.com/2019-11-08-30daymapchallenge-building-maps-1/</guid>
      <description>&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;&lt;strong&gt;The #30DayMapChallenge was initiated by &lt;a href=&#34;https://twitter.com/tjukanov&#34;&gt;Topi Tjukanov&lt;/a&gt; on Twitter. This is open to anyone who would like to show a map, whatever the software is. In this blog post, I will show maps made with R. I add constraints to myself for fun. This week, I will use {ggplot2} to create maps.&lt;/strong&gt;&lt;/p&gt;
&lt;div id=&#34;packages&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Packages&lt;/h2&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;library(dplyr)
library(sf)
library(raster)
library(ggplot2)
library(readr)
library(tmap)
# library(hexbin)

## Customize
# Test for font family
# extrafont::font_import(prompt = FALSE)
font &amp;lt;- extrafont::choose_font(c(&amp;quot;Nanum Pen&amp;quot;, &amp;quot;Lato&amp;quot;, &amp;quot;sans&amp;quot;))

my_blue &amp;lt;- &amp;quot;#1e73be&amp;quot;
my_theme &amp;lt;- function(font = &amp;quot;Nanum Pen&amp;quot;, ...) {
  theme_dark() %+replace%
    theme(
      plot.title = element_text(family = font, 
                                colour = my_blue, size = 18),
      plot.subtitle = element_text(family = font, size = 15),
      # text = element_text(size = 13), #family = font, 
      plot.margin = margin(4, 4, 4, 4),
      plot.background = element_rect(fill = &amp;quot;#f5f5f2&amp;quot;, color = NA),
      legend.text = element_text(family = font, size = 10),
      legend.title = element_text(family = font),
      # legend.text = element_text(size = 8),
      legend.background = element_rect(fill = &amp;quot;#f5f5f2&amp;quot;),
      ...
    )
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;data&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Data&lt;/h2&gt;
&lt;div id=&#34;loire-atlantique-in-france&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Loire-atlantique in France&lt;/h3&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# extraWD &amp;lt;- &amp;quot;.&amp;quot; # Uncomment for the script to work
# Read shapefile &amp;quot;Departement.shp&amp;quot;
France_L93 &amp;lt;- st_read(file.path(extraWD, &amp;quot;DEPARTEMENT.shp&amp;quot;), quiet = TRUE)
LoireATl_L93 &amp;lt;- st_read(file.path(extraWD, &amp;quot;Intersect_ZE_L93.shp&amp;quot;), quiet = TRUE)

# Create polygon for oceanic area (difference with terrestrial)
LoireATl_ocean_L93 &amp;lt;- st_bbox(LoireATl_L93) %&amp;gt;%
  st_as_sfc()  %&amp;gt;% 
  st_difference(st_union(LoireATl_L93))

ggplot(LoireATl_ocean_L93) +
  geom_sf(fill = my_blue) +
  labs(
    title = &amp;quot;bbox difference with terrestrial&amp;quot;
  ) +
  theme_dark()

# Read trafic in Loire-atlantique 2010, 2013
trafic_L93 &amp;lt;- st_read(file.path(extraWD, &amp;quot;trafic_L93.shp&amp;quot;), quiet = TRUE)

# Trafic merged with roads
RoadsMergeTrafic_Dpt44_L93 &amp;lt;- st_read( 
  file.path(extraWD, &amp;quot;RoadsMergeTrafic_Dpt44_L93.shp&amp;quot;),
  quiet = TRUE) %&amp;gt;% 
  st_line_merge()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;points-spatial-points-and-facets-with-ggplot2&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Points: Spatial points and facets with {ggplot2}&lt;/h2&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;ggplot() + 
  geom_sf(data = LoireATl_ocean_L93, colour = NA, fill = my_blue, alpha = 0.75) +
  geom_sf(data = LoireATl_L93, colour = &amp;quot;grey80&amp;quot;, fill = NA) +
  geom_sf(data = trafic_L93, aes(size = TV), 
          colour = &amp;quot;white&amp;quot;, alpha = 0.5, 
          inherit.aes = FALSE, show.legend = &amp;quot;point&amp;quot;) +
  facet_wrap(~ANNEE_REF) +
  coord_sf(crs = st_crs(trafic_L93),
           xlim = c(st_bbox(trafic_L93)$xmin, st_bbox(trafic_L93)$xmax),
           ylim = c(st_bbox(trafic_L93)$ymin, st_bbox(trafic_L93)$ymax)) +
  scale_colour_gradientn(
    &amp;quot;Nombre&amp;quot;,
    colours = RColorBrewer::brewer.pal(9, &amp;quot;YlOrRd&amp;quot;),
    trans = &amp;quot;log&amp;quot;,
    breaks = c(400, 1000, 3000, 8000, 22000)
    ) +
  scale_size(range = c(0.25, 4)) +
  # guides(size = FALSE) +
  labs(x = &amp;quot;&amp;quot;, y = &amp;quot;&amp;quot;, 
       title = &amp;quot;Trafic sur les routes de Loire-atlantique&amp;quot;,
       subtitle = &amp;quot;Nombre de voitures (moyenne journalière au point de contrôle)&amp;quot;,
       caption = &amp;quot;@statnmap; Source: data.loire-atlantique.fr&amp;quot;,
       size = &amp;quot;Nombre\nvéhicules&amp;quot;) +
  theme_dark(base_size = 10) +
  theme(plot.title = element_text(colour = my_blue))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;https://statnmap.com/post/2019-11-08-30daymapchallenge-building-maps-1/figure-html/points-1.jpeg&#34; width=&#34;90%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
      &lt;br/&gt;&lt;p&gt;See more: &lt;a href=&#34;https://statnmap.com/2019-11-08-30daymapchallenge-building-maps-1/&#34;&gt;#30DayMapChallenge: 30 days building maps (1) - ggplot2&lt;/a&gt;&lt;/p&gt;
      </description>
    </item>
    
    <item>
      <title>Follow moving particle trajectory over raster with {rayshader}</title>
      <link>https://statnmap.com/2019-10-06-follow-moving-particle-trajectory-on-raster-with-rayshader/</link>
      <pubDate>Sun, 06 Oct 2019 00:00:00 +0000</pubDate>
      
      <guid>https://statnmap.com/2019-10-06-follow-moving-particle-trajectory-on-raster-with-rayshader/</guid>
      <description>&lt;p&gt;&lt;strong&gt;{rayshader} is a fantastic package for 3D mapping, but it comes with the limitations of {rgl}. I always found it a shame not being able to travel in all directions over my 3D objects. In this blog post, I will show a trick to simulate particle trajectory in 3 dimensions like in a “first person” video game.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Functions presented here are available in package {maps2ray} on my Github: &lt;a href=&#34;https://github.com/statnmap/maps2ray&#34; class=&#34;uri&#34;&gt;https://github.com/statnmap/maps2ray&lt;/a&gt;&lt;/p&gt;
&lt;div id=&#34;a-few-years-earlier&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;A few years earlier…&lt;/h2&gt;
&lt;p&gt;A few years ago, I was modelling flatfish larval dispersal in the Eastern Channel for my PhD thesis (Link to the thesis at the bottom of &lt;a href=&#34;https://statnmap.com/cv/&#34;&gt;my CV&lt;/a&gt;). At that time, I dreamt I would have time to create a little video that would follow one larvae during its long journey to the coasts, then becoming a young flatfish… I never found time to do this. The only animation I could do was the following one. Symbol of the particle changes according to developmental stage of larvae. At some point, there are big enough to settle over a nursery, if reached.&lt;/p&gt;
      &lt;br/&gt;&lt;p&gt;See more: &lt;a href=&#34;https://statnmap.com/2019-10-06-follow-moving-particle-trajectory-on-raster-with-rayshader/&#34;&gt;Follow moving particle trajectory over raster with {rayshader}&lt;/a&gt;&lt;/p&gt;
      </description>
    </item>
    
    <item>
      <title>Create a twitter bot on a Raspberry Pi 3 using R</title>
      <link>https://statnmap.com/2019-08-30-create-a-twitter-bot-on-a-raspberry-pi-3-using-r/</link>
      <pubDate>Fri, 30 Aug 2019 00:00:00 +0000</pubDate>
      
      <guid>https://statnmap.com/2019-08-30-create-a-twitter-bot-on-a-raspberry-pi-3-using-r/</guid>
      <description>&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;&lt;strong&gt;With &lt;a href=&#34;https://marionlouveaux.fr&#34;&gt;Marion Louveaux&lt;/a&gt;, we decided that we had to build a Twitter bot for our preferred hashtag. We explored different possibilities but truth is I couldn’t resist building it using R and {rtweet}. Here are the steps I used to set up a Twitter bot on my Raspberry Pi.&lt;/strong&gt;&lt;/p&gt;
&lt;div id=&#34;create-a-twitter-bot&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Create a twitter bot&lt;/h1&gt;
&lt;p&gt;We will create a twitter bot that retweets tweets containing &lt;code&gt;#rspatial&lt;/code&gt;: &lt;a href=&#34;https://twitter.com/talk_rspatial&#34; class=&#34;uri&#34;&gt;https://twitter.com/talk_rspatial&lt;/a&gt;&lt;br /&gt;
In this aim, we need:&lt;/p&gt;
      &lt;br/&gt;&lt;p&gt;See more: &lt;a href=&#34;https://statnmap.com/2019-08-30-create-a-twitter-bot-on-a-raspberry-pi-3-using-r/&#34;&gt;Create a twitter bot on a Raspberry Pi 3 using R&lt;/a&gt;&lt;/p&gt;
      </description>
    </item>
    
    <item>
      <title>Keep a github/gitlab fork up-to-date</title>
      <link>https://statnmap.com/2019-05-12-keep-github-gitlab-fork-up-to-date/</link>
      <pubDate>Sun, 12 May 2019 00:00:00 +0000</pubDate>
      
      <guid>https://statnmap.com/2019-05-12-keep-github-gitlab-fork-up-to-date/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Developers in the R-community are open to any kind of help in the development of their packages. You can open issues but also propose some pull/merge requests to improve code and/or documentation. But once you have forked the main repository, how can you be sure to work on the last version of the code ? Let’s see a few lines of code to keep your forks up-to-date.&lt;/strong&gt;&lt;/p&gt;
&lt;div id=&#34;manage-your-forks&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Manage your forks&lt;/h2&gt;
&lt;p&gt;If you forked a github or gitlab repository to propose pull/merge requests, you may need to work on the last updated version of the original repository. The graphical interfaces do not allow you to stay up-to-date with the exact same commits. If you already tried graphically, you probably had to include different merge commits.&lt;br /&gt;
Hence, to be able to continue participate in the development, or get your own fork updated with the last modifications of the original repository, you will have to manage this locally with a few command lines. &lt;strong&gt;All command lines below are to be run in a Terminal.&lt;/strong&gt; &lt;em&gt;Remember that you have a “Terminal” interface in your Rstudio IDE to manage your system using command lines.&lt;/em&gt;&lt;/p&gt;
      &lt;br/&gt;&lt;p&gt;See more: &lt;a href=&#34;https://statnmap.com/2019-05-12-keep-github-gitlab-fork-up-to-date/&#34;&gt;Keep a github/gitlab fork up-to-date&lt;/a&gt;&lt;/p&gt;
      </description>
    </item>
    
    <item>
      <title>Render mesh3d objects with rayshader and rayrender</title>
      <link>https://statnmap.com/2019-04-02-mesh3d-rayshader-and-rayrender/</link>
      <pubDate>Wed, 10 Apr 2019 00:00:00 +0000</pubDate>
      
      <guid>https://statnmap.com/2019-04-02-mesh3d-rayshader-and-rayrender/</guid>
      <description>&lt;p&gt;&lt;strong&gt;People like to show 3D images in their presentations because it usually impresses the audience. Does it really ? I do not care ! I am just looking for an opportunity to play with some 3D images…&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This blog post is a detailed version of some 3D images shown during &lt;a href=&#34;https://github.com/statnmap/prez/blob/master/2019-02-22_SatRdays_Paris.pdf&#34;&gt;my presentation “Everything but maps with spatial tools” at SatRday Paris&lt;/a&gt;.&lt;/p&gt;
&lt;div id=&#34;rayshade-3d-objects&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Rayshade 3D objects&lt;/h2&gt;
&lt;p&gt;I use to play with mesh3d objects using {rgl}. In a previous post, I already showed &lt;a href=&#34;https://statnmap.com/2018-10-28-play-with-spatial-tools-on-3d-cells-images&#34;&gt;how to transform a 3dmesh into a 2D spatial raster object so that it can fit in {rayshader}&lt;/a&gt;. Indeed, {rayshader} and {rayrender} use 2D matrices to render 3D objects and I wanted to know how this would be possible to use 3D objects to be rayshaded directly. However, I do not want to build a new package for that. Tyler Morgan is doing a great job, I want to use what already exists. Using {rayshader} thus requires to transform a triangular 3D mesh into a rectangular 2D matrix to be able to render a 3D rectangular rayshaded form. With {rayrender}, this is a little more challenging. I needed to think my triangular 3D mesh as a voxelised 3D image. Yes, I like to think in a rectangular way…&lt;/p&gt;
      &lt;br/&gt;&lt;p&gt;See more: &lt;a href=&#34;https://statnmap.com/2019-04-02-mesh3d-rayshader-and-rayrender/&#34;&gt;Render mesh3d objects with rayshader and rayrender&lt;/a&gt;&lt;/p&gt;
      </description>
    </item>
    
    <item>
      <title>Kaggle survey 2018: Maps of programming languages used and repartition of reproducibility issues</title>
      <link>https://statnmap.com/2019-03-20-kaggle-survey-2018-maps-of-languages-used-and-repartition-of-reproducibility-issues/</link>
      <pubDate>Wed, 20 Mar 2019 00:00:00 +0000</pubDate>
      
      <guid>https://statnmap.com/2019-03-20-kaggle-survey-2018-maps-of-languages-used-and-repartition-of-reproducibility-issues/</guid>
      <description>&lt;script src=&#34;https://statnmap.com/rmarkdown-libs/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;&lt;strong&gt;Last year I participated to the &lt;a href=&#34;https://www.kaggle.com/kaggle/kaggle-survey-2018&#34;&gt;Kaggle survey data challenge&lt;/a&gt;. &lt;em&gt;The challenge objective: tell a data story about a subset of the data science community represented in this survey, through a combination of both narrative text and data exploration&lt;/em&gt;. I used this opportunity to build ternary choropleth maps with {ggtern} and {tricolore}.&lt;/strong&gt;&lt;/p&gt;
&lt;div id=&#34;choice-of-the-story&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Choice of the story&lt;/h2&gt;
&lt;p&gt;I hope that my blog is obvious enough to show that I am a &lt;a href=&#34;https://statnmap.com/categories/spatial&#34;&gt;R developer who like maps&lt;/a&gt;. As a data scientist, I am also highly concerned about communication and reproducibility of studies. These specificities will drive my motivation for the exploration of the &lt;a href=&#34;https://www.kaggle.com/kaggle/kaggle-survey-2018&#34;&gt;Kaggle survey dataset&lt;/a&gt;.&lt;br /&gt;
I will try to see if there are worldwide geographical disparities in the panel of respondents. I will focus on the most used programming languages as answered by the respondents. By coincidence, R is one of them.&lt;/p&gt;
      &lt;br/&gt;&lt;p&gt;See more: &lt;a href=&#34;https://statnmap.com/2019-03-20-kaggle-survey-2018-maps-of-languages-used-and-repartition-of-reproducibility-issues/&#34;&gt;Kaggle survey 2018: Maps of programming languages used and repartition of reproducibility issues&lt;/a&gt;&lt;/p&gt;
      </description>
    </item>
    
  </channel>
</rss>
