

{"id":11840,"date":"2019-01-30T07:52:37","date_gmt":"2019-01-30T12:52:37","guid":{"rendered":"https:\/\/rud.is\/b\/?p=11840"},"modified":"2019-01-30T07:52:37","modified_gmt":"2019-01-30T12:52:37","slug":"fast-static-maps-built-with-r","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/","title":{"rendered":"Fast Static Maps Built with R"},"content":{"rendered":"<p><a href=\"https:\/\/github.com\/lukewhyte\">Luke Whyte<\/a> posted an <a href=\"https:\/\/towardsdatascience.com\/fast-static-d3-maps-built-with-turf-js-and-the-command-line-5b7c72b7e775\">article<\/a> (apologies for a Medium link) over on Towards Data Science showing how to use a command line workflow involving <code>curl<\/code>, <code>node<\/code> and various D3 libraries and javascript source files to build a series of SVG static maps. It&#8217;s well written and you should give it a read especially since he provides the code and data.<\/p>\n<p>We can do all of that in R with the help of a couple packages and by using a free geocoding service which will also allow us to put more data on the map, albeit with some extra work due to it returning weird values for Hawaii locations.<\/p>\n<pre><code class=\"language-r\">library(albersusa) # git.sr.ht\/~hrbrmstr\/albersusa | git[la|hu]b\/hrbrmstr\/albersusa\nlibrary(rgeocodio) # git.sr.ht\/~hrbrmstr\/rgeocodio | git[la|hu]b\/hrbrmstr\/rgeocodio\nlibrary(tidyverse)\n\n# the data url from the original blog\nfil &lt;- \"https:\/\/query.data.world\/s\/awyahzfiikyoqi5ygpvauqslwmqltr\"\n\nread_csv(fil, col_types = \"cd\") %&gt;% \n  select(area=1, pct=2) %&gt;% \n  mutate(pct = pct\/100) -&gt; xdf # make percents proper percents\n\ngc &lt;- gio_batch_geocode(xdf$area)\n<\/code><\/pre>\n<p>The result of the geocoding is a data frame that has various confidences associated with the result. We&#8217;ll pick the top one for each and then correct for the errant Hawaii longitude it gives back:<\/p>\n<pre><code class=\"language-r\">map2_df(gc$query, gc$response_results, ~{\n  out &lt;- .y[1,,]\n  out$area &lt;- .x\n  out\n}) %&gt;% \n  filter(!is.na(location.lat)) %&gt;% \n  select(area, state = address_components.state, lat=location.lat, lon=location.lng) %&gt;% \n  mutate(\n    lat = ifelse(grepl(\"Honolu\", area), 21.3069, lat),\n    lon = ifelse(grepl(\"Honolu\", area), -157.8583, lon)\n  ) %&gt;% \n  left_join(xdf) %&gt;% \n  as_tibble() -&gt; area_pct\n\narea_pct\n## # A tibble: 47 x 5\n##    area                                        state   lat    lon   pct\n##    &lt;chr&gt;                                       &lt;chr&gt; &lt;dbl&gt;  &lt;dbl&gt; &lt;dbl&gt;\n##  1 McAllen-Edinburg-Mission, TX                TX     26.2  -98.1 0.102\n##  2 Houston-The Woodlands-Sugar Land, TX        TX     29.6  -95.8 0.087\n##  3 Santa Maria-Santa Barbara, CA               CA     34.4 -120.  0.081\n##  4 Las Vegas-Henderson-Paradise, NV            NV     36.1 -115.  0.08 \n##  5 Los Angeles-Long Beach-Anaheim, CA          CA     33.9 -118.  0.075\n##  6 Miami-Fort Lauderdale-West Palm Beach, FL   FL     26.6  -80.1 0.073\n##  7 Dallas-Fort Worth-Arlington, TX             TX     33.3  -98.4 0.069\n##  8 Washington-Arlington-Alexandria, DC-VA-MD-\u2026 WV     39.2  -81.7 0.068\n##  9 Bridgeport-Stamford-Norwalk, CT             CT     41.3  -73.1 0.067\n## 10 San Jose-Sunnyvale-Santa Clara, CA          CA     37.4 -122.  0.065\n## # \u2026 with 37 more rows\n<\/code><\/pre>\n<p>The <code>albersusa<\/code> package provides base maps with Alaska &amp; Hawaii elided into a composite U.S. map. As such, we need to elide any points that are in Alaska &amp; Hawaii:<\/p>\n<pre><code class=\"language-r\">us &lt;- usa_composite()\nus_map &lt;- fortify(us, region=\"name\")\n\nhi &lt;- select(filter(area_pct, state == \"HI\"), lon, lat)\n(hi &lt;- points_elided(hi))\narea_pct[area_pct$state == \"HI\", c(\"lon\", \"lat\")] &lt;- hi\n<\/code><\/pre>\n<p>Then, it&#8217;s just a matter of using <code>ggplot2<\/code>:<\/p>\n<pre><code class=\"language-r\">ggplot() +\n  geom_map(\n    data = us@data, map=us_map,\n    aes(map_id=name), \n    fill = \"white\", color = \"#2b2b2b\", size = 0.1\n  ) +\n  geom_point(\n    data = area_pct, aes(lon, lat, size = pct), \n    fill = alpha(\"#b30000\", 1\/2), color = \"#b30000\", shape=21\n  ) +\n  ggalt::coord_proj(us_laea_proj) +\n  scale_y_continuous(expand=c(0, 3)) +\n  scale_radius(\n    name = NULL, label = scales::percent_format(1)\n  ) +\n  labs(x = \"Estimated percent of undocumented residents in U.S. metro areas. Source: Pew Research Center\") +\n  theme_minimal() +\n  theme(axis.text = element_blank()) +\n  theme(axis.title.x = element_text(hjust=0.5, size = 8)) +\n  theme(axis.title.y = element_blank()) +\n  theme(panel.grid = element_blank()) +\n  theme(legend.position = c(0.9, 0.3)) -&gt; gg\n\nggsave(filename = \"map.svg\", device = \"svg\", plot = gg, height = 5, width = 7)\n<\/code><\/pre>\n<p>Unlike the post&#8217;s featured image (which has to be a bitmap\u2026grrr) the resultant SVG is below:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/rud.is\/dl\/fast-static.svg\" alt=\"\" \/><\/p>\n<h3>FIN<\/h3>\n<p>There is absolutely nothing wrong with working where you&#8217;re most comfortable and capable and Luke definitely wields the command line and javascript incredibly well. This alternate way of doing things in R may help other data journalists who are more comfortable in R or want to increase their R knowledge replicate and expand upon Luke&#8217;s process.<\/p>\n<p>If you&#8217;ve got alternate ways of doing this in R or even (gasp) Python, drop a note in the comments with a link to your blog so folks who are comfortable neither in R nor the command line can see even more ways of producing this type of content.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Luke Whyte posted an article (apologies for a Medium link) over on Towards Data Science showing how to use a command line workflow involving curl, node and various D3 libraries and javascript source files to build a series of SVG static maps. It&#8217;s well written and you should give it a read especially since he [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":11843,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[91],"tags":[],"class_list":["post-11840","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-r"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Fast Static Maps Built with R - rud.is<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fast Static Maps Built with R - rud.is\" \/>\n<meta property=\"og:description\" content=\"Luke Whyte posted an article (apologies for a Medium link) over on Towards Data Science showing how to use a command line workflow involving curl, node and various D3 libraries and javascript source files to build a series of SVG static maps. It&#8217;s well written and you should give it a read especially since he [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2019-01-30T12:52:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/fast-static-maps.png?fit=1360%2C914&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1360\" \/>\n\t<meta property=\"og:image:height\" content=\"914\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"hrbrmstr\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"hrbrmstr\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"Fast Static Maps Built with R\",\"datePublished\":\"2019-01-30T12:52:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/\"},\"wordCount\":314,\"commentCount\":6,\"publisher\":{\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"image\":{\"@id\":\"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/fast-static-maps.png?fit=1360%2C914&ssl=1\",\"articleSection\":[\"R\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/\",\"url\":\"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/\",\"name\":\"Fast Static Maps Built with R - rud.is\",\"isPartOf\":{\"@id\":\"https:\/\/rud.is\/b\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/fast-static-maps.png?fit=1360%2C914&ssl=1\",\"datePublished\":\"2019-01-30T12:52:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/fast-static-maps.png?fit=1360%2C914&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/fast-static-maps.png?fit=1360%2C914&ssl=1\",\"width\":1360,\"height\":914},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/rud.is\/b\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fast Static Maps Built with R\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/rud.is\/b\/#website\",\"url\":\"https:\/\/rud.is\/b\/\",\"name\":\"rud.is\",\"description\":\"&quot;In God we trust. All others must bring data&quot;\",\"publisher\":{\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/rud.is\/b\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\",\"name\":\"hrbrmstr\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1\",\"url\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1\",\"width\":460,\"height\":460,\"caption\":\"hrbrmstr\"},\"logo\":{\"@id\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1\"},\"description\":\"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7\",\"sameAs\":[\"http:\/\/rud.is\"],\"url\":\"https:\/\/rud.is\/b\/author\/hrbrmstr\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Fast Static Maps Built with R - rud.is","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/","og_locale":"en_US","og_type":"article","og_title":"Fast Static Maps Built with R - rud.is","og_description":"Luke Whyte posted an article (apologies for a Medium link) over on Towards Data Science showing how to use a command line workflow involving curl, node and various D3 libraries and javascript source files to build a series of SVG static maps. It&#8217;s well written and you should give it a read especially since he [&hellip;]","og_url":"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/","og_site_name":"rud.is","article_published_time":"2019-01-30T12:52:37+00:00","og_image":[{"width":1360,"height":914,"url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/fast-static-maps.png?fit=1360%2C914&ssl=1","type":"image\/png"}],"author":"hrbrmstr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"hrbrmstr","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"Fast Static Maps Built with R","datePublished":"2019-01-30T12:52:37+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/"},"wordCount":314,"commentCount":6,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"image":{"@id":"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/fast-static-maps.png?fit=1360%2C914&ssl=1","articleSection":["R"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/","url":"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/","name":"Fast Static Maps Built with R - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/#primaryimage"},"image":{"@id":"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/fast-static-maps.png?fit=1360%2C914&ssl=1","datePublished":"2019-01-30T12:52:37+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/#primaryimage","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/fast-static-maps.png?fit=1360%2C914&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/fast-static-maps.png?fit=1360%2C914&ssl=1","width":1360,"height":914},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2019\/01\/30\/fast-static-maps-built-with-r\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"Fast Static Maps Built with R"}]},{"@type":"WebSite","@id":"https:\/\/rud.is\/b\/#website","url":"https:\/\/rud.is\/b\/","name":"rud.is","description":"&quot;In God we trust. All others must bring data&quot;","publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rud.is\/b\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886","name":"hrbrmstr","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","width":460,"height":460,"caption":"hrbrmstr"},"logo":{"@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1"},"description":"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7","sameAs":["http:\/\/rud.is"],"url":"https:\/\/rud.is\/b\/author\/hrbrmstr\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/01\/fast-static-maps.png?fit=1360%2C914&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p23idr-34Y","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":11859,"url":"https:\/\/rud.is\/b\/2019\/02\/03\/r-package-update-urlscan\/","url_meta":{"origin":11840,"position":0},"title":"R Package Update: urlscan","author":"hrbrmstr","date":"2019-02-03","format":false,"excerpt":"The urlscan? package (an interface to the urlscan.io API) is now at version 0.2.0 and supports urlscan.io's authentication requirement when submitting a link for analysis. The service is handy if you want to learn about the details \u2014 all the gory technical details \u2014 for a website. For instance, say\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":11837,"url":"https:\/\/rud.is\/b\/2019\/01\/30\/quick-hit-using-seymour-to-subscribe-to-your-gitlahub-repo-issues-in-feedly\/","url_meta":{"origin":11840,"position":1},"title":"Quick Hit: Using seymour to Subscribe to your Git[la|hu]b Repo Issues in Feedly","author":"hrbrmstr","date":"2019-01-30","format":false,"excerpt":"The seymour? Feedly API package has been updated to support subscribing to RSS\/Atom feeds. Previously the package was intended to just treat your Feedly as a data source, but there was a compelling use case for enabling subscription support: subscribing to code repository issues. Sure, there's already email notice integration\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":11846,"url":"https:\/\/rud.is\/b\/2019\/02\/02\/homebrew-2-0-0-released-homebrewanalytics-package-updated\/","url_meta":{"origin":11840,"position":2},"title":"Homebrew 2.0.0 Released == homebrewanalytics package updated","author":"hrbrmstr","date":"2019-02-02","format":false,"excerpt":"A major new release of Homebrew has landed and now includes support for Linux as well as Windows! via the Windows Subsystem for Linux. There are overall stability and speed improvements baked in as well. The aforelinked notification has all the info you need to see the minutiae. Unless you've\u2026","rel":"","context":"In &quot;homebrew&quot;","block_context":{"text":"homebrew","link":"https:\/\/rud.is\/b\/category\/homebrew\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/02\/02-50-libs-01.png?fit=1200%2C1197&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/02\/02-50-libs-01.png?fit=1200%2C1197&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/02\/02-50-libs-01.png?fit=1200%2C1197&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/02\/02-50-libs-01.png?fit=1200%2C1197&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/02\/02-50-libs-01.png?fit=1200%2C1197&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":11597,"url":"https:\/\/rud.is\/b\/2018\/09\/28\/quick-hit-using-the-new-equal-earth-projection-in-r\/","url_meta":{"origin":11840,"position":3},"title":"Quick Hit: Using the New Equal Earth Projection in R","author":"hrbrmstr","date":"2018-09-28","format":false,"excerpt":"In my semi-daily run of brew update I noticed that proj4 had been updated to 5.2. I kinda \"squeee\"'d since (as the release notes show) the Equal Earth projection was added to it (+proj=eqearth). As the team who created the projection describes it: \"The Equal Earth map projection is a\u2026","rel":"","context":"In &quot;cartography&quot;","block_context":{"text":"cartography","link":"https:\/\/rud.is\/b\/category\/cartography\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/09\/eqearth.png?fit=1200%2C720&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/09\/eqearth.png?fit=1200%2C720&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/09\/eqearth.png?fit=1200%2C720&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/09\/eqearth.png?fit=1200%2C720&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/09\/eqearth.png?fit=1200%2C720&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":3314,"url":"https:\/\/rud.is\/b\/2015\/03\/15\/simple-lower-us-48-albers-maps-local-no-api-citystate-geocoding-in-r\/","url_meta":{"origin":11840,"position":4},"title":"Simple Lower US 48 Albers Maps &#038; Local (no-API) City\/State Geocoding in R","author":"hrbrmstr","date":"2015-03-15","format":false,"excerpt":"I've been seeing an uptick in static US \"lower 48\" maps with \"meh\" projections this year, possibly caused by a flood of new folks resolving to learn R but using pretty old documentation or tutorials. I've also been seeing an uptick in folks needing to geocode US city\/state to lat\/lon.\u2026","rel":"","context":"In &quot;cartography&quot;","block_context":{"text":"cartography","link":"https:\/\/rud.is\/b\/category\/cartography\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3141,"url":"https:\/\/rud.is\/b\/2014\/11\/27\/power-outage-impact-choropleths-in-5-steps-in-r-featuring-rvest-rstudio-projects\/","url_meta":{"origin":11840,"position":5},"title":"Power Outage Impact Choropleths In 5 Steps in R (featuring rvest &#038; RStudio &#8220;Projects&#8221;)","author":"hrbrmstr","date":"2014-11-27","format":false,"excerpt":"I and @awpiii were trading news about the power outages in Maine & New Hampshire last night and he tweeted the link to the @PSNH [Outage Map](http:\/\/www.psnh.com\/outage\/). As if the Bing Maps tiles weren't bad enough, the use of a categorical color scale instead of a sequential one[[1](http:\/\/earthobservatory.nasa.gov\/blogs\/elegantfigures\/2011\/05\/20\/qualitative-vs-sequential-color-scales\/)] caused sufficient\u2026","rel":"","context":"In &quot;Charts &amp; Graphs&quot;","block_context":{"text":"Charts &amp; Graphs","link":"https:\/\/rud.is\/b\/category\/charts-graphs\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/11840","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/comments?post=11840"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/11840\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media\/11843"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=11840"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=11840"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=11840"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}