

{"id":13391,"date":"2022-04-04T08:45:45","date_gmt":"2022-04-04T13:45:45","guid":{"rendered":"https:\/\/rud.is\/b\/?p=13391"},"modified":"2022-04-04T08:45:45","modified_gmt":"2022-04-04T13:45:45","slug":"update-on-esc-pos-package-work","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/","title":{"rendered":"Update On ESC\/POS Package Work"},"content":{"rendered":"<p>The morning before work was super productive and there is a nigh-complete DSL for ESC\/POS commands along with the ability to just print {ggplot2}\/{grid} object.<\/p>\n<p>I changed the package name to <a href=\"https:\/\/github.com\/hrbrmstr\/escpos\">{escpos}<\/a> since it is no longer just plot object focused, and the DSL looks a bit like this:<\/p>\n<pre><code class=\"language-r\">library(stringi)\nlibrary(hrbrthemes)\nlibrary(ggplot2)\nlibrary(escpos)\n\nggplot() +\n  geom_point(\n    data = mtcars,\n    aes(wt, mpg),\n    color = \"red\"\n  ) +\n  labs(\n    title = \"A good title\"\n  ) +\n  theme_ipsum_es(grid=\"XY\") -&gt; gg\n\nepson_ip = \"HOSTNAME_OR_IP_OF_YOUR_PRINTER\"\n\nescpos(epson_ip) |&gt;\n  pos_bold(\"on\") %&gt;%\n  pos_align(\"center\") %&gt;%\n  pos_size(\"2x\") %&gt;%\n  pos_underline(\"2dot\") %&gt;%\n  pos_plaintext(\"This Is A Title\") %&gt;%\n  pos_lf(2) |&gt;\n  pos_underline(\"off\") %&gt;%\n  pos_size(\"normal\") %&gt;%\n  pos_align(\"left\") %&gt;%\n  pos_bold(\"off\") %&gt;%\n  pos_font(\"b\") %&gt;%\n  pos_plaintext(\n    stringi::stri_rand_lipsum(1)\n  ) |&gt;\n  pos_lf(2) |&gt;\n  pos_font(\"a\") %&gt;%\n  pos_plaintext(\n    paste0(capture.output(\n      str(mtcars, width = 40, strict.width = \"cut\")\n    ), collapse = \"\\n\")\n  ) |&gt;\n  pos_lf(2L) |&gt;\n  pos_plot(gg, color = TRUE) %&gt;%\n  pos_lf(2L) |&gt;\n  pos_font(\"c\") %&gt;%\n  pos_plaintext(\n    stringi::stri_rand_lipsum(1, start_lipsum = FALSE)\n  ) |&gt;\n  pos_lf(3) |&gt;\n  pos_cut() %&gt;%\n  pos_print()\n<\/code><\/pre>\n<p><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2022\/04\/escpos-complex.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"13392\" data-permalink=\"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/escpos-complex\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2022\/04\/escpos-complex.png?fit=304%2C991&amp;ssl=1\" data-orig-size=\"304,991\" 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=\"escpos-complex\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2022\/04\/escpos-complex.png?fit=92%2C300&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2022\/04\/escpos-complex.png?fit=304%2C991&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2022\/04\/escpos-complex.png?resize=304%2C991&#038;ssl=1\" alt=\"full capabilities ESC\/POS printing \" width=\"304\" height=\"991\" class=\"aligncenter size-full wp-image-13392\" srcset=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2022\/04\/escpos-complex.png?w=304&amp;ssl=1 304w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2022\/04\/escpos-complex.png?resize=92%2C300&amp;ssl=1 92w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2022\/04\/escpos-complex.png?resize=46%2C150&amp;ssl=1 46w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2022\/04\/escpos-complex.png?resize=150%2C489&amp;ssl=1 150w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2022\/04\/escpos-complex.png?resize=200%2C652&amp;ssl=1 200w\" sizes=\"auto, (max-width: 304px) 100vw, 304px\" \/><\/a><\/p>\n<h3>FIN<\/h3>\n<p>I still need to make a more generic options &#8220;setter&#8221; (i.e. so one can set multiple modes in one function call), and I think supporting some kind of markdown\/HTML subset to make it easier just to specify that without using the full DSL would be helpful. More updates over the coming weeks!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The morning before work was super productive and there is a nigh-complete DSL for ESC\/POS commands along with the ability to just print {ggplot2}\/{grid} object. I changed the package name to {escpos} since it is no longer just plot object focused, and the DSL looks a bit like this: library(stringi) library(hrbrthemes) library(ggplot2) library(escpos) ggplot() + [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"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-13391","post","type-post","status-publish","format-standard","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>Update On ESC\/POS Package Work - 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\/2022\/04\/04\/update-on-esc-pos-package-work\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Update On ESC\/POS Package Work - rud.is\" \/>\n<meta property=\"og:description\" content=\"The morning before work was super productive and there is a nigh-complete DSL for ESC\/POS commands along with the ability to just print {ggplot2}\/{grid} object. I changed the package name to {escpos} since it is no longer just plot object focused, and the DSL looks a bit like this: library(stringi) library(hrbrthemes) library(ggplot2) library(escpos) ggplot() + [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2022-04-04T13:45:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/rud.is\/b\/wp-content\/uploads\/2022\/04\/escpos-complex.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=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"Update On ESC\/POS Package Work\",\"datePublished\":\"2022-04-04T13:45:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/\"},\"wordCount\":112,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"image\":{\"@id\":\"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/rud.is\/b\/wp-content\/uploads\/2022\/04\/escpos-complex.png\",\"articleSection\":[\"R\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/\",\"url\":\"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/\",\"name\":\"Update On ESC\/POS Package Work - rud.is\",\"isPartOf\":{\"@id\":\"https:\/\/rud.is\/b\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/rud.is\/b\/wp-content\/uploads\/2022\/04\/escpos-complex.png\",\"datePublished\":\"2022-04-04T13:45:45+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2022\/04\/escpos-complex.png?fit=304%2C991&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2022\/04\/escpos-complex.png?fit=304%2C991&ssl=1\",\"width\":304,\"height\":991,\"caption\":\"full capabilities ESC\/POS printing\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/rud.is\/b\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Update On ESC\/POS Package Work\"}]},{\"@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":"Update On ESC\/POS Package Work - 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\/2022\/04\/04\/update-on-esc-pos-package-work\/","og_locale":"en_US","og_type":"article","og_title":"Update On ESC\/POS Package Work - rud.is","og_description":"The morning before work was super productive and there is a nigh-complete DSL for ESC\/POS commands along with the ability to just print {ggplot2}\/{grid} object. I changed the package name to {escpos} since it is no longer just plot object focused, and the DSL looks a bit like this: library(stringi) library(hrbrthemes) library(ggplot2) library(escpos) ggplot() + [&hellip;]","og_url":"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/","og_site_name":"rud.is","article_published_time":"2022-04-04T13:45:45+00:00","og_image":[{"url":"https:\/\/rud.is\/b\/wp-content\/uploads\/2022\/04\/escpos-complex.png","type":"","width":"","height":""}],"author":"hrbrmstr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"hrbrmstr","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"Update On ESC\/POS Package Work","datePublished":"2022-04-04T13:45:45+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/"},"wordCount":112,"commentCount":4,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"image":{"@id":"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/#primaryimage"},"thumbnailUrl":"https:\/\/rud.is\/b\/wp-content\/uploads\/2022\/04\/escpos-complex.png","articleSection":["R"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/","url":"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/","name":"Update On ESC\/POS Package Work - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/#primaryimage"},"image":{"@id":"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/#primaryimage"},"thumbnailUrl":"https:\/\/rud.is\/b\/wp-content\/uploads\/2022\/04\/escpos-complex.png","datePublished":"2022-04-04T13:45:45+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/#primaryimage","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2022\/04\/escpos-complex.png?fit=304%2C991&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2022\/04\/escpos-complex.png?fit=304%2C991&ssl=1","width":304,"height":991,"caption":"full capabilities ESC\/POS printing"},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2022\/04\/04\/update-on-esc-pos-package-work\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"Update On ESC\/POS Package Work"}]},{"@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":"","jetpack_shortlink":"https:\/\/wp.me\/p23idr-3tZ","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":13382,"url":"https:\/\/rud.is\/b\/2022\/04\/03\/turning-ggplot2-into-a-pos-point-of-sale-system\/","url_meta":{"origin":13391,"position":0},"title":"Turning {ggplot2} Into a PoS (Point-of-Sale) System","author":"hrbrmstr","date":"2022-04-03","format":false,"excerpt":"At the end of March, I caught a fleeting tweet that showcased an Epson thermal receipt printer generating a new \"ticket\" whenever a new GitHub issue was filed on a repository. @aschmelyun documents it well in this blog post. It's a pretty cool hack, self-contained on a Pi Zero. Andrew's\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\/2022\/04\/FPR9RFaXwAgE6bN-scaled.jpeg?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2022\/04\/FPR9RFaXwAgE6bN-scaled.jpeg?resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2022\/04\/FPR9RFaXwAgE6bN-scaled.jpeg?resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2022\/04\/FPR9RFaXwAgE6bN-scaled.jpeg?resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2022\/04\/FPR9RFaXwAgE6bN-scaled.jpeg?resize=1050%2C600 3x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2022\/04\/FPR9RFaXwAgE6bN-scaled.jpeg?resize=1400%2C800 4x"},"classes":[]},{"id":3127,"url":"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/","url_meta":{"origin":13391,"position":1},"title":"Visualizing Historical &#038; Most-likely First Snowfall Dates for U.S. Regions","author":"hrbrmstr","date":"2014-11-26","format":false,"excerpt":"UPDATE: You can now run this as a local Shiny app by entering shiny::runGist(\"95ec24c1b0cb433a76a5\", launch.browser=TRUE) at an R prompt (provided all the dependent libraries (below) are installed) or use it interactively over at Shiny Apps. The impending arrival of the first real snowfall of the year in my part of\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":[]},{"id":3498,"url":"https:\/\/rud.is\/b\/2015\/07\/09\/faceted-world-population-by-income-choropleths-in-ggplot\/","url_meta":{"origin":13391,"position":2},"title":"Faceted &#8220;World Population by Income&#8221; Choropleths in ggplot","author":"hrbrmstr","date":"2015-07-09","format":false,"excerpt":"Poynter did a nice interactive piece on world population by income (i.e. \"How Many Live on How Much, and Where\"). I'm always on the lookout for optimized shapefiles and clean data (I'm teaching a data science certificate program starting this Fall) and the speed of the site load and the\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":13175,"url":"https:\/\/rud.is\/b\/2021\/08\/13\/some-covid-donuts-to-end-the-week\/","url_meta":{"origin":13391,"position":3},"title":"Some Covid Donuts To End The Week","author":"hrbrmstr","date":"2021-08-13","format":false,"excerpt":"Vox grabbed some data from the Kaiser Family Foundation and did a story a few days ago on it, then posted a different visualization of it that attracted some attention: I'm a pretty ardent donut detractor, but I have to also admit that they work pretty well for this use\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\/2021\/08\/covid-donuts-01.png?fit=1200%2C921&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2021\/08\/covid-donuts-01.png?fit=1200%2C921&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2021\/08\/covid-donuts-01.png?fit=1200%2C921&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2021\/08\/covid-donuts-01.png?fit=1200%2C921&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2021\/08\/covid-donuts-01.png?fit=1200%2C921&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":12282,"url":"https:\/\/rud.is\/b\/2019\/06\/06\/make-multi-point-dumbbell-plots-in-ggplot2\/","url_meta":{"origin":13391,"position":4},"title":"Make Multi-point &#8220;dumbbell&#8221; Plots in ggplot2","author":"hrbrmstr","date":"2019-06-06","format":false,"excerpt":"A user of the {ggalt} package recently posted a question about how to add points to a geom_dumbbell() plot. For now, this is not something you can do with geom_dumbbell() but with a bit of data wrangling you can do this in a pretty straightforward manner with just your data\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\/there-are-three-points-2.png?fit=1200%2C560&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/06\/there-are-three-points-2.png?fit=1200%2C560&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/06\/there-are-three-points-2.png?fit=1200%2C560&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/06\/there-are-three-points-2.png?fit=1200%2C560&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2019\/06\/there-are-three-points-2.png?fit=1200%2C560&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":4980,"url":"https:\/\/rud.is\/b\/2017\/02\/06\/strung-out-on-string-ops-a-brief-comparison-of-stringi-and-stringr\/","url_meta":{"origin":13391,"position":5},"title":"Strung Out On String Ops &#8211; A Brief Comparison of stringi and stringr","author":"hrbrmstr","date":"2017-02-06","format":false,"excerpt":"I made a promise to someone that my next blog would be about stringi vs stringr and I intend to keep said promise. stringr and stringi do \"string operations\": find, replace, match, extract, convert, transform, etc. The stringr package is now part of the tidyverse and is 100% focused on\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":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/13391","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=13391"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/13391\/revisions"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=13391"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=13391"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=13391"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}