

{"id":4449,"date":"2016-06-16T09:01:11","date_gmt":"2016-06-16T14:01:11","guid":{"rendered":"http:\/\/rud.is\/b\/?p=4449"},"modified":"2018-03-07T16:42:22","modified_gmt":"2018-03-07T21:42:22","slug":"your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2016\/06\/16\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\/","title":{"rendered":"Your data vis &#8220;Spidey-sense&#8221; &#038; the need for a robust &#8220;utility belt&#8221;"},"content":{"rendered":"<p>@theboysmithy did a [great piece](http:\/\/www.ft.com\/intl\/cms\/s\/0\/6f777c84-322b-11e6-ad39-3fee5ffe5b5b.html) on coming up with an alternate view for a timeline for an FT piece. <\/p>\n<p>Here&#8217;s an excerpt (read the whole piece, though, it&#8217;s worth it):<\/p>\n<div style=\"margin-left:60px; font-style: italic\">\n<p>Here is an example from a story recently featured in the FT: emerging- market populations are expected to age more rapidly than those in developed countries. The figures alone are compelling: France is expected to take 157 years (from 1865 to 2022) to triple the proportion of its population aged over 65, from 7 per cent to 21 per cent; for China, the equivalent period is likely to be just 34 years (from 2001 to 2035).<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/im.ft-static.com\/content\/images\/43a2f7e4-3223-11e6-bda0-04585c31b153.img\"\/><\/p>\n<p>You may think that visualising this story is as simple as creating a bar chart of the durations ordered by length. In fact, we came across just such a chart from a research agency.<\/p>\n<p>But, to me, this approach generates \u201cthe feeling\u201d \u2014 and further scrutiny reveals specific problems. A reader must work hard to memorise the date information next to the country labels to work out if there is a relationship between the start date and the length of time taken for the population to age. The chart is clearly not ideal, but how do we improve it?<\/p>\n<\/div>\n<p>Alan went on to talk about the process of improving the vis, eventually turning to [Joseph Priestly](https:\/\/en.wikipedia.org\/wiki\/Joseph_Priestley) for inspiration. Here&#8217;s their makeover:<\/p>\n<p>![](http:\/\/im.ft-static.com\/content\/images\/4a75d9ce-3223-11e6-bda0-04585c31b153.img)<\/p>\n<p>Alan used D3 to make this, which had me head scratching for a bit. Bostock is genius &#038; I :heart: D3 immensely, but I never really thought of it as a &#8220;canvas&#8221; for doing general data visualization creation for something like a print publication (it&#8217;s geared towards making incredibly data-rich interactive visualizations). It&#8217;s 100% cool to do so, though. It has fine-grained control over every aspect of a visualization and you can easily turn SVGs into PDFs or use them in programs like Illustrator to make the final enhancements. However, D3 is not the only tool that can make a chart like this.<\/p>\n<p>I made the following in R (of course):<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/06\/RStudio.png?ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"4454\" data-permalink=\"https:\/\/rud.is\/b\/2016\/06\/16\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\/rstudio-11\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/06\/RStudio.png?fit=1754%2C938&amp;ssl=1\" data-orig-size=\"1754,938\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"RStudio\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/06\/RStudio.png?fit=510%2C273&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/06\/RStudio.png?w=510&#038;ssl=1\" alt=\"RStudio\"  class=\"aligncenter size-full wp-image-4454\" \/><\/a><\/p>\n<p>The annotations in Alan&#8217;s image were (99% most likely) made with something like Illustrator. I stopped short of fully reproducing the image (life is super-crazy, still), but could have done so (the entire image is one `ggplot2` object). <\/p>\n<p>This isn&#8217;t an &#8220;R > D3&#8221; post, though, since I use both. It&#8217;s about (a) reinforcing Alan&#8217;s posits that we should absolutely take inspiration from historical vis pioneers (so read more!) + need a diverse visualization &#8220;utility belt&#8221; (ref: Batman) to ensure you have the necessary tools to make a given visualization; (b) trusting your &#8220;Spidey-sense&#8221; when it comes to evaluating your creations\/decisions; and, (c) showing that R is a great alternative to D3 for something like this :-)<\/p>\n<p>Spider-man (you expected headier references from a dude with a shield avatar?)  has this ability to sense danger right before it happens and if you&#8217;re making an effort to develop and share great visualizations, you definitely have this same sense in your DNA (though I would not recommend tossing pie charts at super-villains to stop them). When you&#8217;ve made something and it just doesn&#8217;t &#8220;feel right&#8221;, look to other sources of inspiration or reach out to your colleagues or the community for ideas or guidance. You _can_ and _do_ make awesome things, and you _do_ have a &#8220;Spidey-sense&#8221;. You just need to listen to it more, add depth and breadth to your &#8220;utility belt&#8221; and keep improving with each creation you release into the wild.<\/p>\n<p>R code for the ggplot vis reproduction is below, and it + the CSV file referenced are in [this gist](https:\/\/gist.github.com\/hrbrmstr\/f12101f8ef1657f9e1457e0dde1602f8).<\/p>\n<pre id=\"prism-r-code\"><code class=\"language-r\">library(ggplot2)\r\nlibrary(dplyr)\r\n\r\nft &lt;- read.csv(&quot;ftpop.csv&quot;, stringsAsFactors=FALSE)\r\n\r\narrange(ft, start_year) %&gt;%\r\n  mutate(country=factor(country, levels=c(&quot; &quot;, rev(country), &quot;  &quot;))) -&gt; ft\r\n\r\nft_labs &lt;- data_frame(\r\n  x=c(1900, 1950, 2000, 2050, 1900, 1950, 2000, 2050),\r\n  y=c(rep(&quot; &quot;, 4), rep(&quot;  &quot;, 4)),\r\n  hj=c(0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5),\r\n  vj=c(1, 1, 1, 1, 0, 0, 0, 0)\r\n)\r\n\r\nft_lines &lt;- data_frame(x=c(1900, 1950, 2000, 2050))\r\n\r\nft_ticks &lt;- data_frame(x=seq(1860, 2050, 10))\r\n\r\ngg &lt;- ggplot()\r\n\r\n# tick marks &amp; gridlines\r\ngg &lt;- gg + geom_segment(data=ft_lines, aes(x=x, xend=x, y=2, yend=16),\r\n                        linetype=&quot;dotted&quot;, size=0.15)\r\ngg &lt;- gg + geom_segment(data=ft_ticks, aes(x=x, xend=x, y=16.9, yend=16.6),\r\n                        linetype=&quot;dotted&quot;, size=0.15)\r\ngg &lt;- gg + geom_segment(data=ft_ticks, aes(x=x, xend=x, y=1.1, yend=1.4),\r\n                        linetype=&quot;dotted&quot;, size=0.15)\r\n\r\n# double &amp; triple bars\r\ngg &lt;- gg + geom_segment(data=ft, size=5, color=&quot;#b0657b&quot;,\r\n                        aes(x=start_year, xend=start_year+double, y=country, yend=country))\r\ngg &lt;- gg + geom_segment(data=ft, size=5, color=&quot;#eb9c9d&quot;,\r\n                        aes(x=start_year+double, xend=start_year+double+triple, y=country, yend=country))\r\n\r\n# tick labels\r\ngg &lt;- gg + geom_text(data=ft_labs, aes(x, y, label=x, hjust=hj, vjust=vj), size=3)\r\n\r\n# annotations\r\ngg &lt;- gg + geom_label(data=data.frame(), hjust=0, label.size=0, size=3,\r\n                      aes(x=1911, y=7.5, label=&quot;France is set to take\\n157 years to triple the\\nproportion ot its\\npopulation aged 65+,\\nChina only 34 years&quot;))\r\ngg &lt;- gg + geom_curve(data=data.frame(), aes(x=1911, xend=1865, y=9, yend=15.5),\r\n                      curvature=-0.5, arrow=arrow(length=unit(0.03, &quot;npc&quot;)))\r\ngg &lt;- gg + geom_curve(data=data.frame(), aes(x=1915, xend=2000, y=5.65, yend=5),\r\n                      curvature=0.25, arrow=arrow(length=unit(0.03, &quot;npc&quot;)))\r\n\r\n# pretty standard stuff here\r\ngg &lt;- gg + scale_x_continuous(expand=c(0,0), limits=c(1860, 2060))\r\ngg &lt;- gg + scale_y_discrete(drop=FALSE)\r\ngg &lt;- gg + labs(x=NULL, y=NULL, title=&quot;Emerging markets are ageing at a rapid rate&quot;,\r\n                subtitle=&quot;Time taken for population aged 65 and over to double and triple in proportion (from 7% of total population)&quot;,\r\n                caption=&quot;Source: http:\/\/on.ft.com\/1Ys1W2H&quot;)\r\ngg &lt;- gg + theme_minimal()\r\ngg &lt;- gg + theme(axis.text.x=element_blank())\r\ngg &lt;- gg + theme(panel.grid=element_blank())\r\ngg &lt;- gg + theme(plot.margin=margin(10,10,10,10))\r\ngg &lt;- gg + theme(plot.title=element_text(face=&quot;bold&quot;))\r\ngg &lt;- gg + theme(plot.subtitle=element_text(size=9.5, margin=margin(b=10)))\r\ngg &lt;- gg + theme(plot.caption=element_text(size=7, margin=margin(t=-10)))\r\ngg<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>@theboysmithy did a [great piece](http:\/\/www.ft.com\/intl\/cms\/s\/0\/6f777c84-322b-11e6-ad39-3fee5ffe5b5b.html) on coming up with an alternate view for a timeline for an FT piece. Here&#8217;s an excerpt (read the whole piece, though, it&#8217;s worth it): Here is an example from a story recently featured in the FT: emerging- market populations are expected to age more rapidly than those in developed [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4454,"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":[666,678,673,674,753,91],"tags":[810],"class_list":["post-4449","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-d3","category-data-visualization","category-datavis-2","category-dataviz","category-ggplot","category-r","tag-post"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Your data vis &quot;Spidey-sense&quot; &amp; the need for a robust &quot;utility belt&quot; - 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\/2016\/06\/16\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Your data vis &quot;Spidey-sense&quot; &amp; the need for a robust &quot;utility belt&quot; - rud.is\" \/>\n<meta property=\"og:description\" content=\"@theboysmithy did a [great piece](http:\/\/www.ft.com\/intl\/cms\/s\/0\/6f777c84-322b-11e6-ad39-3fee5ffe5b5b.html) on coming up with an alternate view for a timeline for an FT piece. Here&#8217;s an excerpt (read the whole piece, though, it&#8217;s worth it): Here is an example from a story recently featured in the FT: emerging- market populations are expected to age more rapidly than those in developed [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2016\/06\/16\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2016-06-16T14:01:11+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-03-07T21:42:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/06\/RStudio.png?fit=1754%2C938&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1754\" \/>\n\t<meta property=\"og:image:height\" content=\"938\" \/>\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\\\/2016\\\/06\\\/16\\\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2016\\\/06\\\/16\\\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\\\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"Your data vis &#8220;Spidey-sense&#8221; &#038; the need for a robust &#8220;utility belt&#8221;\",\"datePublished\":\"2016-06-16T14:01:11+00:00\",\"dateModified\":\"2018-03-07T21:42:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2016\\\/06\\\/16\\\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\\\/\"},\"wordCount\":668,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"image\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2016\\\/06\\\/16\\\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2016\\\/06\\\/RStudio.png?fit=1754%2C938&ssl=1\",\"keywords\":[\"post\"],\"articleSection\":[\"d3\",\"Data Visualization\",\"DataVis\",\"DataViz\",\"ggplot\",\"R\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2016\\\/06\\\/16\\\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2016\\\/06\\\/16\\\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\\\/\",\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/2016\\\/06\\\/16\\\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\\\/\",\"name\":\"Your data vis \\\"Spidey-sense\\\" & the need for a robust \\\"utility belt\\\" - rud.is\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2016\\\/06\\\/16\\\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2016\\\/06\\\/16\\\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2016\\\/06\\\/RStudio.png?fit=1754%2C938&ssl=1\",\"datePublished\":\"2016-06-16T14:01:11+00:00\",\"dateModified\":\"2018-03-07T21:42:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2016\\\/06\\\/16\\\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2016\\\/06\\\/16\\\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2016\\\/06\\\/16\\\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2016\\\/06\\\/RStudio.png?fit=1754%2C938&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2016\\\/06\\\/RStudio.png?fit=1754%2C938&ssl=1\",\"width\":1754,\"height\":938},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2016\\\/06\\\/16\\\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/rud.is\\\/b\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Your data vis &#8220;Spidey-sense&#8221; &#038; the need for a robust &#8220;utility belt&#8221;\"}]},{\"@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":"Your data vis \"Spidey-sense\" & the need for a robust \"utility belt\" - 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\/2016\/06\/16\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\/","og_locale":"en_US","og_type":"article","og_title":"Your data vis \"Spidey-sense\" & the need for a robust \"utility belt\" - rud.is","og_description":"@theboysmithy did a [great piece](http:\/\/www.ft.com\/intl\/cms\/s\/0\/6f777c84-322b-11e6-ad39-3fee5ffe5b5b.html) on coming up with an alternate view for a timeline for an FT piece. Here&#8217;s an excerpt (read the whole piece, though, it&#8217;s worth it): Here is an example from a story recently featured in the FT: emerging- market populations are expected to age more rapidly than those in developed [&hellip;]","og_url":"https:\/\/rud.is\/b\/2016\/06\/16\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\/","og_site_name":"rud.is","article_published_time":"2016-06-16T14:01:11+00:00","article_modified_time":"2018-03-07T21:42:22+00:00","og_image":[{"width":1754,"height":938,"url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/06\/RStudio.png?fit=1754%2C938&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\/2016\/06\/16\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2016\/06\/16\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"Your data vis &#8220;Spidey-sense&#8221; &#038; the need for a robust &#8220;utility belt&#8221;","datePublished":"2016-06-16T14:01:11+00:00","dateModified":"2018-03-07T21:42:22+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2016\/06\/16\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\/"},"wordCount":668,"commentCount":3,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"image":{"@id":"https:\/\/rud.is\/b\/2016\/06\/16\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/06\/RStudio.png?fit=1754%2C938&ssl=1","keywords":["post"],"articleSection":["d3","Data Visualization","DataVis","DataViz","ggplot","R"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2016\/06\/16\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2016\/06\/16\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\/","url":"https:\/\/rud.is\/b\/2016\/06\/16\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\/","name":"Your data vis \"Spidey-sense\" & the need for a robust \"utility belt\" - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rud.is\/b\/2016\/06\/16\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\/#primaryimage"},"image":{"@id":"https:\/\/rud.is\/b\/2016\/06\/16\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/06\/RStudio.png?fit=1754%2C938&ssl=1","datePublished":"2016-06-16T14:01:11+00:00","dateModified":"2018-03-07T21:42:22+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2016\/06\/16\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2016\/06\/16\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rud.is\/b\/2016\/06\/16\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\/#primaryimage","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/06\/RStudio.png?fit=1754%2C938&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/06\/RStudio.png?fit=1754%2C938&ssl=1","width":1754,"height":938},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2016\/06\/16\/your-data-vis-spidey-sense-the-need-for-a-robust-utility-belt\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"Your data vis &#8220;Spidey-sense&#8221; &#038; the need for a robust &#8220;utility belt&#8221;"}]},{"@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\/2016\/06\/RStudio.png?fit=1754%2C938&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p23idr-19L","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":4183,"url":"https:\/\/rud.is\/b\/2016\/03\/19\/using-propublica-statefaces-in-ggplot2\/","url_meta":{"origin":4449,"position":0},"title":"Using ProPublica &#8220;statefaces&#8221; in ggplot2","author":"hrbrmstr","date":"2016-03-19","format":false,"excerpt":"UPDATE: The dev version of ggalt has a new geom_stateface() which encapsulates the tedious bits and also included the TTF font. I'm a huge fan of ProPublica. They have a super-savvy tech team, great reporters, awesome graphics folks and excel at data-driven journalism. Plus, they give away virtually everything, including\u2026","rel":"","context":"In &quot;Data Visualization&quot;","block_context":{"text":"Data Visualization","link":"https:\/\/rud.is\/b\/category\/data-visualization\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/03\/Plot_Zoom.png?fit=1200%2C921&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/03\/Plot_Zoom.png?fit=1200%2C921&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/03\/Plot_Zoom.png?fit=1200%2C921&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/03\/Plot_Zoom.png?fit=1200%2C921&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/03\/Plot_Zoom.png?fit=1200%2C921&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":4335,"url":"https:\/\/rud.is\/b\/2016\/04\/13\/52vis-week-3-waste-not-want-not\/","url_meta":{"origin":4449,"position":1},"title":"52Vis Week #3 &#8211; Waste Not, Want Not","author":"hrbrmstr","date":"2016-04-13","format":false,"excerpt":"The Wall Street Journal did a project piece [a while back](http:\/\/projects.wsj.com\/waste-lands\/) in the _\"Waste Lands: America's Forgotten Nuclear Legacy\"_. They dug through [Department of Energy](http:\/\/www.lm.doe.gov\/default.aspx?id=2602) and [CDC](http:\/\/www.cdc.gov\/niosh\/ocas\/ocasawe.html) data to provide an overview of the lingering residue of this toxic time in America's past (somehow, I have to believe the fracking\u2026","rel":"","context":"In &quot;52vis&quot;","block_context":{"text":"52vis","link":"https:\/\/rud.is\/b\/category\/52vis\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/04\/waste.png?fit=1200%2C983&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/04\/waste.png?fit=1200%2C983&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/04\/waste.png?fit=1200%2C983&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/04\/waste.png?fit=1200%2C983&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2016\/04\/waste.png?fit=1200%2C983&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":10111,"url":"https:\/\/rud.is\/b\/2018\/04\/18\/examining-potus-executive-orders\/","url_meta":{"origin":4449,"position":2},"title":"Examining POTUS Executive Orders","author":"hrbrmstr","date":"2018-04-18","format":false,"excerpt":"This week's edition of Data is Plural had two really fun data sets. One is serious fun (the first comprehensive data set on U.S. evictions, and the other I knew about but had forgotten: The Federal Register Executive Order (EO) data set(s). The EO data is also comprehensive as the\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/04\/eo-count-2.png?fit=1200%2C635&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/04\/eo-count-2.png?fit=1200%2C635&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/04\/eo-count-2.png?fit=1200%2C635&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/04\/eo-count-2.png?fit=1200%2C635&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2018\/04\/eo-count-2.png?fit=1200%2C635&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":4308,"url":"https:\/\/rud.is\/b\/2016\/04\/13\/52-vis-week-2-wrap-up\/","url_meta":{"origin":4449,"position":3},"title":"52 Vis Week #2 Wrap Up","author":"hrbrmstr","date":"2016-04-13","format":false,"excerpt":"I've been staring at this homeless data set for a few weeks now since I'm using it both here and in the data science class I'm teaching. It's been one of the most mindful data sets I've worked with in a while. Even when reduced to pure numbers in named\u2026","rel":"","context":"In &quot;52vis&quot;","block_context":{"text":"52vis","link":"https:\/\/rud.is\/b\/category\/52vis\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2462,"url":"https:\/\/rud.is\/b\/2013\/04\/14\/framing-a-one-data-vis-a-day-challenge\/","url_meta":{"origin":4449,"position":4},"title":"Framing A One Data Vis A Day Challenge","author":"hrbrmstr","date":"2013-04-14","format":false,"excerpt":"Earlier this evening, I somewhat half-heartedly challenged @jayjacobs that he & I should be generating one data visualization per day. I didn't specify anything else (well, at least that I can disclose publicly, for now) but I think I'm going to try to formalize a bit of the 'rules' before\u2026","rel":"","context":"In &quot;Data Analysis&quot;","block_context":{"text":"Data Analysis","link":"https:\/\/rud.is\/b\/category\/data-analysis-2\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":127,"url":"https:\/\/rud.is\/b\/2011\/02\/14\/metricon-automated-incident-reporting\/","url_meta":{"origin":4449,"position":5},"title":"Metricon: Automated Incident Reporting","author":"hrbrmstr","date":"2011-02-14","format":false,"excerpt":"Speaker: Juhaniu Eronen \"The Autoreporter Project\" - Background Goal: make finland mostly harmless to the rest of the internet (that's actually in the law - Protection of Privacy in Electronic Comms\/Finland) \u00a0 \/me: I'll need to put some verbiage around this tonight to give you a good picture of what\u2026","rel":"","context":"In &quot;Information Security&quot;","block_context":{"text":"Information Security","link":"https:\/\/rud.is\/b\/category\/information-security\/"},"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\/4449","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=4449"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/4449\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media\/4454"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=4449"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=4449"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=4449"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}