

{"id":12524,"date":"2019-09-27T13:15:57","date_gmt":"2019-09-27T18:15:57","guid":{"rendered":"https:\/\/rud.is\/b\/?p=12524"},"modified":"2019-09-27T13:21:54","modified_gmt":"2019-09-27T18:21:54","slug":"100-stacked-chicklets","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/","title":{"rendered":"100% Stacked Chicklets"},"content":{"rendered":"<p>I posted a visualization of email safety status (a.k.a. <a href=\"https:\/\/dmarc.org\/\">DMARC<\/a>) of the Fortune 500 (2017 list) the other day on Twitter and received this spiffy request from @MarkAltosaar:<\/p>\n<blockquote class=\"twitter-tweet\" data-theme=\"dark\">\n<p lang=\"en\" dir=\"ltr\">Would you be willing to add the R code used to produce this to your vignette for ggchicklet? I would love to see how you arranged the factors since it is a proportion. Every time I try something like this I feel like my code becomes very complex.<\/p>\n<p>&mdash; Mark Altosaar (@MarkAltosaar) <a href=\"https:\/\/twitter.com\/MarkAltosaar\/status\/1177011544699228160?ref_src=twsrc%5Etfw\">September 26, 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>There are many ways to achieve this result. I&#8217;ll show one here and walk through the process starting with the data (this is the 2018 DMARC evaluation run):<\/p>\n<pre><code class=\"language-r\">library(hrbrthemes) # CRAN or fav social coding site using hrbrmstr\/pkgname\nlibrary(ggchicklet) # fav social coding site using hrbrmstr\/pkgname\nlibrary(tidyverse)\n\nf500_dmarc &lt;- read_csv(\"https:\/\/rud.is\/dl\/f500-industry-dmarc.csv.gz\", col_types = \"cc\")\n\nf500_dmarc\n## # A tibble: 500 x 2\n##    industry               p         \n##    &lt;chr&gt;                  &lt;chr&gt;     \n##  1 Retailing              Reject    \n##  2 Technology             None      \n##  3 Health Care            Reject    \n##  4 Wholesalers            None      \n##  5 Retailing              Quarantine\n##  6 Motor Vehicles &amp; Parts None      \n##  7 Energy                 None      \n##  8 Wholesalers            None      \n##  9 Retailing              None      \n## 10 Telecommunications     Quarantine\n## # \u2026 with 490 more rows\n<\/code><\/pre>\n<p>The <code>p<\/code> column is the DMARC classification for each organization (org names have been withheld to protect the irresponsible) and comes from the <code>p=\u2026<\/code> value in the DMARC DNS <code>TXT<\/code> record field. It has a limited set of values, so let&#8217;s enumerate them and assign some colors:<\/p>\n<pre><code class=\"language-r\">dmarc_levels &lt;- c(\"No DMARC\", \"None\", \"Quarantine\", \"Reject\")\ndmarc_cols &lt;- set_names(c(ft_cols$slate, \"#a6dba0\", \"#5aae61\", \"#1b7837\"), dmarc_levels)\n<\/code><\/pre>\n<p>We want the aggregate value of each <code>p<\/code>, thus we need to do count counting:<\/p>\n<pre><code class=\"language-r\">(dmarc_summary &lt;- count(f500_dmarc, industry, p))\n## # A tibble: 63 x 3\n##    industry            p              n\n##    &lt;chr&gt;               &lt;chr&gt;      &lt;int&gt;\n##  1 Aerospace &amp; Defense No DMARC       9\n##  2 Aerospace &amp; Defense None           3\n##  3 Aerospace &amp; Defense Quarantine     1\n##  4 Apparel             No DMARC       4\n##  5 Apparel             None           1\n##  6 Business Services   No DMARC       9\n##  7 Business Services   None           7\n##  8 Business Services   Reject         4\n##  9 Chemicals           No DMARC      12\n## 10 Chemicals           None           2\n## # \u2026 with 53 more rows\n<\/code><\/pre>\n<p>We&#8217;re also going to want to sort the industries by those with the most DMARC (sorted bars\/chicklets FTW!). We&#8217;ll need a factor for that, so let&#8217;s make one:<\/p>\n<pre><code class=\"language-r\">(dmarc_summary %&gt;% \n  filter(p != \"No DMARC\") %&gt;% # we don't care abt this `p` value\n  count(industry, wt=n, sort=TRUE) -&gt; industry_levels)\n## # A tibble: 21 x 2\n##    industry                      n\n##    &lt;chr&gt;                     &lt;int&gt;\n##  1 Financials                   54\n##  2 Technology                   25\n##  3 Health Care                  24\n##  4 Retailing                    23\n##  5 Wholesalers                  16\n##  6 Energy                       12\n##  7 Transportation               12\n##  8 Business Services            11\n##  9 Industrials                   8\n## 10 Food, Beverages &amp; Tobacco     6\n## # \u2026 with 11 more rows\n<\/code><\/pre>\n<p>Now, we can make the chart:<\/p>\n<pre><code class=\"language-r\">dmarc_summary %&gt;% \n  mutate(p = factor(p, levels = rev(dmarc_levels))) %&gt;% \n  mutate(industry = factor(industry, rev(industry_levels$industry))) %&gt;% \n  ggplot(aes(industry, n)) +\n  geom_chicklet(aes(fill = p)) +\n  scale_fill_manual(name = NULL, values = dmarc_cols) +\n  scale_y_continuous(expand = c(0,0), position = \"right\") +\n  coord_flip() +\n  labs(\n    x = NULL, y = NULL,\n    title = \"DMARC Status of Fortune 500 (2017 List; 2018 Measurement) Primary Email Domains\"\n  ) +\n  theme_ipsum_rc(grid = \"X\") +\n  theme(legend.position = \"top\")\n<\/code><\/pre>\n<p><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-01.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"12525\" data-permalink=\"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/dmarc-counts-01\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-01.png?fit=2472%2C1360&amp;ssl=1\" data-orig-size=\"2472,1360\" 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=\"dmarc-counts-01\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-01.png?fit=300%2C165&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-01.png?fit=510%2C281&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-01.png?resize=510%2C281&#038;ssl=1\" alt=\"\" width=\"510\" height=\"281\" class=\"aligncenter size-full wp-image-12525\" srcset=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-01.png?w=2472&amp;ssl=1 2472w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-01.png?resize=150%2C83&amp;ssl=1 150w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-01.png?resize=300%2C165&amp;ssl=1 300w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-01.png?resize=768%2C423&amp;ssl=1 768w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-01.png?resize=530%2C292&amp;ssl=1 530w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-01.png?resize=500%2C275&amp;ssl=1 500w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-01.png?resize=1200%2C660&amp;ssl=1 1200w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-01.png?resize=400%2C220&amp;ssl=1 400w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-01.png?resize=800%2C440&amp;ssl=1 800w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-01.png?resize=200%2C110&amp;ssl=1 200w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-01.png?w=1020&amp;ssl=1 1020w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-01.png?w=1530&amp;ssl=1 1530w\" sizes=\"auto, (max-width: 510px) 100vw, 510px\" \/><\/a><\/p>\n<p>Doh! We rly want them to be 100% width. Thankfully, {ggplot2} has a <code>position_fill()<\/code> we can use instead of <code>position_dodge()<\/code>:<\/p>\n<pre><code class=\"language-r\">dmarc_summary %&gt;% \n  mutate(p = factor(p, levels = rev(dmarc_levels))) %&gt;% \n  mutate(industry = factor(industry, rev(industry_levels$industry))) %&gt;% \n  ggplot(aes(industry, n)) +\n  geom_chicklet(aes(fill = p), position = position_fill()) +\n  scale_fill_manual(name = NULL, values = dmarc_cols) +\n  scale_y_continuous(expand = c(0,0), position = \"right\") +\n  coord_flip() +\n  labs(\n    x = NULL, y = NULL,\n    title = \"DMARC Status of Fortune 500 (2017 List; 2018 Measurement) Primary Email Domains\"\n  ) +\n  theme_ipsum_rc(grid = \"X\") +\n  theme(legend.position = \"top\")\n<\/code><\/pre>\n<p><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-fill-01.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"12527\" data-permalink=\"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/dmarc-counts-fill-01\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-fill-01.png?fit=2472%2C1360&amp;ssl=1\" data-orig-size=\"2472,1360\" 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=\"dmarc-counts-fill-01\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-fill-01.png?fit=300%2C165&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-fill-01.png?fit=510%2C281&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-fill-01.png?resize=510%2C281&#038;ssl=1\" alt=\"\" width=\"510\" height=\"281\" class=\"aligncenter size-full wp-image-12527\" srcset=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-fill-01.png?w=2472&amp;ssl=1 2472w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-fill-01.png?resize=150%2C83&amp;ssl=1 150w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-fill-01.png?resize=300%2C165&amp;ssl=1 300w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-fill-01.png?resize=768%2C423&amp;ssl=1 768w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-fill-01.png?resize=530%2C292&amp;ssl=1 530w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-fill-01.png?resize=500%2C275&amp;ssl=1 500w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-fill-01.png?resize=1200%2C660&amp;ssl=1 1200w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-fill-01.png?resize=400%2C220&amp;ssl=1 400w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-fill-01.png?resize=800%2C440&amp;ssl=1 800w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-fill-01.png?resize=200%2C110&amp;ssl=1 200w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-fill-01.png?w=1020&amp;ssl=1 1020w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-counts-fill-01.png?w=1530&amp;ssl=1 1530w\" sizes=\"auto, (max-width: 510px) 100vw, 510px\" \/><\/a><\/p>\n<p>Doh! Even though we forgot to use <code>reverse = TRUE<\/code> in the call to <code>position_fill()<\/code> everything is out of order. <em>Kinda<\/em>. It&#8217;s in the order we told it to be in, but that&#8217;s not right b\/c we need it ordered by the in-industry percentages. If each industry had the same number of organizations, there would not have been an issue. Unfortunately, the folks who make up these lists care not about our time. Let&#8217;s re-compute the industry factor by computing the percents:<\/p>\n<pre><code class=\"language-r\">(dmarc_summary %&gt;% \n  group_by(industry) %&gt;% \n  mutate(pct = n\/sum(n)) %&gt;% \n  ungroup() %&gt;% \n  filter(p != \"No DMARC\") %&gt;% \n  count(industry, wt=pct, sort=TRUE) -&gt; industry_levels)\n## # A tibble: 21 x 2\n##    industry               n\n##    &lt;chr&gt;              &lt;dbl&gt;\n##  1 Transportation     0.667\n##  2 Technology         0.641\n##  3 Wholesalers        0.615\n##  4 Financials         0.614\n##  5 Health Care        0.6  \n##  6 Business Services  0.55 \n##  7 Food &amp; Drug Stores 0.5  \n##  8 Retailing          0.5  \n##  9 Industrials        0.444\n## 10 Telecommunications 0.375\n## # \u2026 with 11 more rows\n<\/code><\/pre>\n<p>Now, we can go back to using <code>position_fill()<\/code> as before:<\/p>\n<pre><code class=\"language-r\">dmarc_summary %&gt;% \n  mutate(p = factor(p, levels = rev(dmarc_levels))) %&gt;% \n  mutate(industry = factor(industry, rev(industry_levels$industry))) %&gt;% \n  ggplot(aes(industry, n)) +\n  geom_chicklet(aes(fill = p), position = position_fill(reverse = TRUE)) +\n  scale_fill_manual(name = NULL, values = dmarc_cols) +\n  scale_y_percent(expand = c(0, 0.001), position = \"right\") +\n  coord_flip() +\n  labs(\n    x = NULL, y = NULL,\n    title = \"DMARC Status of Fortune 500 (2017 List; 2018 Measurement) Primary Email Domains\"\n  ) +\n  theme_ipsum_rc(grid = \"X\") +\n  theme(legend.position = \"top\")\n<\/code><\/pre>\n<p><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"12526\" data-permalink=\"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/dmarc-final-01\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?fit=2472%2C1360&amp;ssl=1\" data-orig-size=\"2472,1360\" 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=\"dmarc-final-01\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?fit=300%2C165&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?fit=510%2C281&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?resize=510%2C281&#038;ssl=1\" alt=\"\" width=\"510\" height=\"281\" class=\"aligncenter size-full wp-image-12526\" srcset=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?w=2472&amp;ssl=1 2472w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?resize=150%2C83&amp;ssl=1 150w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?resize=300%2C165&amp;ssl=1 300w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?resize=768%2C423&amp;ssl=1 768w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?resize=530%2C292&amp;ssl=1 530w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?resize=500%2C275&amp;ssl=1 500w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?resize=1200%2C660&amp;ssl=1 1200w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?resize=400%2C220&amp;ssl=1 400w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?resize=800%2C440&amp;ssl=1 800w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?resize=200%2C110&amp;ssl=1 200w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?w=1020&amp;ssl=1 1020w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?w=1530&amp;ssl=1 1530w\" sizes=\"auto, (max-width: 510px) 100vw, 510px\" \/><\/a><\/p>\n<h3>FIN<\/h3>\n<p>As noted, this is one way to handle this situation. I&#8217;m not super happy with the final visualization here as it doesn&#8217;t have the counts next to the industry labels and I like to have the ordering by both count and more secure configuration (so, conditional on higher prevalence of <code>Quarantine<\/code> or <code>Reject<\/code> when there are ties). That is an exercise left to the reader ?.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I posted a visualization of email safety status (a.k.a. DMARC) of the Fortune 500 (2017 list) the other day on Twitter and received this spiffy request from @MarkAltosaar: Would you be willing to add the R code used to produce this to your vignette for ggchicklet? I would love to see how you arranged the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":12526,"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-12524","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>100% Stacked Chicklets - 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\/09\/27\/100-stacked-chicklets\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"100% Stacked Chicklets - rud.is\" \/>\n<meta property=\"og:description\" content=\"I posted a visualization of email safety status (a.k.a. DMARC) of the Fortune 500 (2017 list) the other day on Twitter and received this spiffy request from @MarkAltosaar: Would you be willing to add the R code used to produce this to your vignette for ggchicklet? I would love to see how you arranged the [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2019-09-27T18:15:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-09-27T18:21:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?fit=2472%2C1360&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"2472\" \/>\n\t<meta property=\"og:image:height\" content=\"1360\" \/>\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=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"100% Stacked Chicklets\",\"datePublished\":\"2019-09-27T18:15:57+00:00\",\"dateModified\":\"2019-09-27T18:21:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/\"},\"wordCount\":382,\"commentCount\":7,\"publisher\":{\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"image\":{\"@id\":\"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?fit=2472%2C1360&ssl=1\",\"articleSection\":[\"R\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/\",\"url\":\"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/\",\"name\":\"100% Stacked Chicklets - rud.is\",\"isPartOf\":{\"@id\":\"https:\/\/rud.is\/b\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?fit=2472%2C1360&ssl=1\",\"datePublished\":\"2019-09-27T18:15:57+00:00\",\"dateModified\":\"2019-09-27T18:21:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?fit=2472%2C1360&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?fit=2472%2C1360&ssl=1\",\"width\":2472,\"height\":1360},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/rud.is\/b\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"100% Stacked Chicklets\"}]},{\"@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":"100% Stacked Chicklets - 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\/09\/27\/100-stacked-chicklets\/","og_locale":"en_US","og_type":"article","og_title":"100% Stacked Chicklets - rud.is","og_description":"I posted a visualization of email safety status (a.k.a. DMARC) of the Fortune 500 (2017 list) the other day on Twitter and received this spiffy request from @MarkAltosaar: Would you be willing to add the R code used to produce this to your vignette for ggchicklet? I would love to see how you arranged the [&hellip;]","og_url":"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/","og_site_name":"rud.is","article_published_time":"2019-09-27T18:15:57+00:00","article_modified_time":"2019-09-27T18:21:54+00:00","og_image":[{"width":2472,"height":1360,"url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?fit=2472%2C1360&ssl=1","type":"image\/png"}],"author":"hrbrmstr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"hrbrmstr","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"100% Stacked Chicklets","datePublished":"2019-09-27T18:15:57+00:00","dateModified":"2019-09-27T18:21:54+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/"},"wordCount":382,"commentCount":7,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"image":{"@id":"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?fit=2472%2C1360&ssl=1","articleSection":["R"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/","url":"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/","name":"100% Stacked Chicklets - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/#primaryimage"},"image":{"@id":"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?fit=2472%2C1360&ssl=1","datePublished":"2019-09-27T18:15:57+00:00","dateModified":"2019-09-27T18:21:54+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/#primaryimage","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?fit=2472%2C1360&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/09\/dmarc-final-01.png?fit=2472%2C1360&ssl=1","width":2472,"height":1360},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2019\/09\/27\/100-stacked-chicklets\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"100% Stacked Chicklets"}]},{"@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\/09\/dmarc-final-01.png?fit=2472%2C1360&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p23idr-3g0","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":8140,"url":"https:\/\/rud.is\/b\/2018\/02\/06\/quick-and-clean-dmarc-record-processing-with-inline-rcpp\/","url_meta":{"origin":12524,"position":0},"title":"Quick and Clean DMARC Record Processing with &#8220;Inline&#8221; Rcpp","author":"hrbrmstr","date":"2018-02-06","format":false,"excerpt":"Much of what I need to do for work-work involves using tools that are (for the moment) not in R. Today, I needed to test the validity of (and other processing on) DMARC records and I'm loathe to either reinvent the wheel or reticulate bits from a fragmented programming language\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":12657,"url":"https:\/\/rud.is\/b\/2020\/02\/21\/bimi-up-scotty-a-look-at-brand-indicators-for-message-identification-bimi-adoption-with-r-and-the-alexa-top-1m\/","url_meta":{"origin":12524,"position":1},"title":"BIMI Up, Scotty! A look at Brand Indicators for Message Identification (BIMI) Adoption with R and the Alexa Top 1m","author":"hrbrmstr","date":"2020-02-21","format":false,"excerpt":"It seems that the need for MX, DKIM, SPF, and DMARC records for modern email setups were just not enough acronyms (and setup tasks) for some folks, resulting in the creation of yet-another-acronym --- BIMI, or, Brand Indicators for Message Identification. The goal of BIMI is to \"provide a mechanism\u2026","rel":"","context":"In &quot;Cybersecurity&quot;","block_context":{"text":"Cybersecurity","link":"https:\/\/rud.is\/b\/category\/cybersecurity\/"},"img":{"alt_text":"BIMI Brand Logos","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?fit=1200%2C446&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?fit=1200%2C446&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?fit=1200%2C446&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?fit=1200%2C446&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2020\/02\/bimi-brands.png?fit=1200%2C446&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":12354,"url":"https:\/\/rud.is\/b\/2019\/06\/18\/quick-hit-some-ggplot2-stat\/","url_meta":{"origin":12524,"position":2},"title":"Quick hit: Some ggplot2 Stat ? for {logspline}","author":"hrbrmstr","date":"2019-06-18","format":false,"excerpt":"I've become a big fan of the {logspline} package over the past ~6 months and decided to wrap up a manual ggplot2 plotting process (well, it was at least in an RStudio snippet) into a small {ggplot2} Stat to make it easier to visualize various components of the fitted model.\u2026","rel":"","context":"In &quot;ggplot&quot;","block_context":{"text":"ggplot","link":"https:\/\/rud.is\/b\/category\/ggplot\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/06\/logspline-ex-01.png?fit=1200%2C1069&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/06\/logspline-ex-01.png?fit=1200%2C1069&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/06\/logspline-ex-01.png?fit=1200%2C1069&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/06\/logspline-ex-01.png?fit=1200%2C1069&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/06\/logspline-ex-01.png?fit=1200%2C1069&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":16387,"url":"https:\/\/rud.is\/b\/2023\/11\/12\/ligatures-in-rstudio-dailies\/","url_meta":{"origin":12524,"position":3},"title":"Ligatures In RStudio Dailies","author":"hrbrmstr","date":"2023-11-12","format":false,"excerpt":"I had thought most folks likely knew this already, but if you are a user of RStudio dailies (this may apply to regular RStudio, but I only use the dailies) and are missing ligatures in the editor (for some fonts), the \"fix\" is pretty simple (some misguided folks think ligatures\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"rstudio pane showing ligatures for Monaspace","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/11\/rstudio-lig.png?fit=1200%2C754&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/11\/rstudio-lig.png?fit=1200%2C754&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/11\/rstudio-lig.png?fit=1200%2C754&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/11\/rstudio-lig.png?fit=1200%2C754&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/11\/rstudio-lig.png?fit=1200%2C754&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1750,"url":"https:\/\/rud.is\/b\/2012\/10\/28\/watch-sandy-in-r-including-forecast-cone\/","url_meta":{"origin":12524,"position":4},"title":"Watch Sandy in &#8220;R&#8221; (Including Forecast Cone)","author":"hrbrmstr","date":"2012-10-28","format":false,"excerpt":"As indicated in the code comments, Google took down the cone KML files. I'll be changing the code to use the NHC archived cone files later tonight NOTE: There is significantly updated code on github for the Sandy 'R' dataviz. This is a follow-up post to the quickly crafted Watch\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":3413,"url":"https:\/\/rud.is\/b\/2015\/05\/15\/u-s-drought-monitoring-with-hexbin-state-maps-in-r\/","url_meta":{"origin":12524,"position":5},"title":"U.S. Drought Monitoring With Hexbin State Maps in R","author":"hrbrmstr","date":"2015-05-15","format":false,"excerpt":"On the news, today, of the early stages of drought hitting the U.S. northeast states I decided to springboard off of yesterday's post and show a more practical use of hexbin state maps than the built-in (and still purpose unknown to me) \"bees\" data. The U.S. Drought Monitor site supplies\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":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/12524","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=12524"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/12524\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media\/12526"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=12524"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=12524"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=12524"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}