

{"id":1622,"date":"2012-10-05T21:14:08","date_gmt":"2012-10-06T02:14:08","guid":{"rendered":"http:\/\/rud.is\/b\/?p=1622"},"modified":"2018-03-10T07:53:18","modified_gmt":"2018-03-10T12:53:18","slug":"diy-zeroaccess-geoip-visualizations-back-to-the-basics","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2012\/10\/05\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\/","title":{"rendered":"DIY ZeroAccess GeoIP Visualizations :: Back To The Basics"},"content":{"rendered":"<p>While <a href=\"https:\/\/rud.is\/b\/2012\/10\/05\/diy-zeroaccess-geoip-plots\/\">shiny<\/a> <a href=\"https:\/\/rud.is\/b\/2012\/10\/05\/more-diy-zeroaccess-geoip-fun-jqueryd3-choropleths\/\">visualizations<\/a> are all well-and-good, sometimes plain ol&#8217; charts &amp; graphs can give you the data you&#8217;re looking for.<\/p>\n<p>If we take the one-liner filter from the previous example and use it to just output CSV-formatted summary data:<\/p>\n<pre lang=\"bash\">cat ZeroAccessGeoIPs.csv | cut -f1,1 -d\\,| sort | uniq -c | sort -n | tr \"[:upper:]\" \"[:lower:]\" | while read a b ; do echo \"$b, $a\" ; done > bots.csv<\/pre>\n<p>then we can take the output file and shove it in <a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1uNhwwN0k2MjefjqkG688za10W7oHKiJvQH0guwLQsKI\/edit\">Google Docs<\/a> to do more traditional analysis, beginning with the classic bar chart:<\/p>\n<p><center><img decoding=\"async\" src=\"https:\/\/docs.google.com\/spreadsheets\/d\/1uNhwwN0k2MjefjqkG688za10W7oHKiJvQH0guwLQsKI\/embed\/oimg?oid=3&amp;zx=6nwljxc1suj0\" \/><\/center><\/p>\n<p>In this view, it&#8217;s pretty obvious that the United States is an outlier with Japan a distant second. This is interesting in-and-of itself since Japan has 126,475,664 inhabitants and the United States has 313,232,044 (i.e. the U.S. has ~3x more people)<a href=\"https:\/\/www.infoplease.com\/world\/population-statistics\/area-and-population-countries\"><sup><em><\/sup><\/a>. If we take a look at Internet users, Japan has 101,228,736 while the U.S. has 245,203,319 (i.e. the U.S. has ~2x more internet users)<sup><a href=\"https:\/\/www.internetworldstats.com\/top20.htm\"><strong><\/sup><\/a>. If we look at GDP, Japan&#8217;s was $5.869 trillion while the U.S. cranked out $15.09 trillion (i.e. U.S. is ~3x)<a href=\"https:\/\/www.cia.gov\/library\/publications\/the-world-factbook\/fields\/2195.html\"><sup><\/strong><\/em><\/sup><\/a>. Yet, the botnet stats show that Japan has 10,110 bots while the U.S. has 47,880 (i.e. the U.S. has ~5x more bots). So, clearly U.S. citizens are either more targeted, have system characteristics\/user-behavior or user-attributes that make them more susceptible to bot infections.<\/p>\n<p>This type of data doesn&#8217;t always jump out from an eye-candy visualization.<\/p>\n<p>If we filter out the U.S. outlier, there&#8217;s a more gradual progression between the other countries:<\/p>\n<p><center><img decoding=\"async\" src=\"https:\/\/docs.google.com\/spreadsheets\/d\/1uNhwwN0k2MjefjqkG688za10W7oHKiJvQH0guwLQsKI\/embed\/oimg?oid=5&amp;zx=rkm2ta62j2r0\" \/><\/center><\/p>\n<p>We now have some great starting points \u2013 using simple\/freely available tools \u2013\u00a0to ask more questions, which is one of the fundamental goals of data analysis.<\/p>\n<p>Taking this one step further before my next post, if we use some <a href=\"https:\/\/stackoverflow.com\/questions\/8751497\/latitude-longitude-coordinates-to-state-code-in-r\">R code to convert longitude &amp; latitude to U.S. state names<\/a> (yes, there&#8217;s a US-centric bias to some of my tools :-), we can see \u2013\u00a0with a traditional bar chart \u2013\u00a0which ones were more impacted than others:<\/p>\n<p><center><a target=\"_blank\" href=\"https:\/\/rud.is\/b\/wp-content\/uploads\/2012\/10\/Snapshot-10612-1041-AM-2.png\"><img decoding=\"async\" src=\"https:\/\/docs.google.com\/spreadsheets\/d\/1uNhwwN0k2MjefjqkG688za10W7oHKiJvQH0guwLQsKI\/embed\/oimg?oid=8&amp;zx=heuclfg4iepd\" \/><br \/>Click for larger version<\/a><\/center><\/p>\n<p>We can use the state names to make a choropleth, but I&#8217;ll leave that as an exercise to the reader, or may do a sample with that in Python in an upcoming post.<\/p>\n<p>The data used for these charts are all available in <a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1uNhwwN0k2MjefjqkG688za10W7oHKiJvQH0guwLQsKI\/edit\">Google Docs<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>While shiny visualizations are all well-and-good, sometimes plain ol&#8217; charts &amp; graphs can give you the data you&#8217;re looking for. If we take the one-liner filter from the previous example and use it to just output CSV-formatted summary data: cat ZeroAccessGeoIPs.csv | cut -f1,1 -d\\,| sort | uniq -c | sort -n | tr &#8220;[:upper:]&#8221; [&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":true,"_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":[24],"tags":[],"class_list":["post-1622","post","type-post","status-publish","format-standard","hentry","category-charts-graphs"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>DIY ZeroAccess GeoIP Visualizations :: Back To The Basics - 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\/2012\/10\/05\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DIY ZeroAccess GeoIP Visualizations :: Back To The Basics - rud.is\" \/>\n<meta property=\"og:description\" content=\"While shiny visualizations are all well-and-good, sometimes plain ol&#8217; charts &amp; graphs can give you the data you&#8217;re looking for. If we take the one-liner filter from the previous example and use it to just output CSV-formatted summary data: cat ZeroAccessGeoIPs.csv | cut -f1,1 -d,| sort | uniq -c | sort -n | tr &quot;[:upper:]&quot; [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2012\/10\/05\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2012-10-06T02:14:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-03-10T12:53:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/docs.google.com\/spreadsheets\/d\/1uNhwwN0k2MjefjqkG688za10W7oHKiJvQH0guwLQsKI\/embed\/oimg?oid=3&amp;zx=6nwljxc1suj0\" \/>\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=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/10\\\/05\\\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/10\\\/05\\\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\\\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"DIY ZeroAccess GeoIP Visualizations :: Back To The Basics\",\"datePublished\":\"2012-10-06T02:14:08+00:00\",\"dateModified\":\"2018-03-10T12:53:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/10\\\/05\\\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\\\/\"},\"wordCount\":366,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"image\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/10\\\/05\\\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/docs.google.com\\\/spreadsheets\\\/d\\\/1uNhwwN0k2MjefjqkG688za10W7oHKiJvQH0guwLQsKI\\\/embed\\\/oimg?oid=3&amp;zx=6nwljxc1suj0\",\"articleSection\":[\"Charts &amp; Graphs\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/10\\\/05\\\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/10\\\/05\\\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\\\/\",\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/10\\\/05\\\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\\\/\",\"name\":\"DIY ZeroAccess GeoIP Visualizations :: Back To The Basics - rud.is\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/10\\\/05\\\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/10\\\/05\\\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/docs.google.com\\\/spreadsheets\\\/d\\\/1uNhwwN0k2MjefjqkG688za10W7oHKiJvQH0guwLQsKI\\\/embed\\\/oimg?oid=3&amp;zx=6nwljxc1suj0\",\"datePublished\":\"2012-10-06T02:14:08+00:00\",\"dateModified\":\"2018-03-10T12:53:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/10\\\/05\\\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/10\\\/05\\\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/10\\\/05\\\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\\\/#primaryimage\",\"url\":\"https:\\\/\\\/docs.google.com\\\/spreadsheets\\\/d\\\/1uNhwwN0k2MjefjqkG688za10W7oHKiJvQH0guwLQsKI\\\/embed\\\/oimg?oid=3&amp;zx=6nwljxc1suj0\",\"contentUrl\":\"https:\\\/\\\/docs.google.com\\\/spreadsheets\\\/d\\\/1uNhwwN0k2MjefjqkG688za10W7oHKiJvQH0guwLQsKI\\\/embed\\\/oimg?oid=3&amp;zx=6nwljxc1suj0\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/10\\\/05\\\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/rud.is\\\/b\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DIY ZeroAccess GeoIP Visualizations :: Back To The Basics\"}]},{\"@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":"DIY ZeroAccess GeoIP Visualizations :: Back To The Basics - 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\/2012\/10\/05\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\/","og_locale":"en_US","og_type":"article","og_title":"DIY ZeroAccess GeoIP Visualizations :: Back To The Basics - rud.is","og_description":"While shiny visualizations are all well-and-good, sometimes plain ol&#8217; charts &amp; graphs can give you the data you&#8217;re looking for. If we take the one-liner filter from the previous example and use it to just output CSV-formatted summary data: cat ZeroAccessGeoIPs.csv | cut -f1,1 -d,| sort | uniq -c | sort -n | tr \"[:upper:]\" [&hellip;]","og_url":"https:\/\/rud.is\/b\/2012\/10\/05\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\/","og_site_name":"rud.is","article_published_time":"2012-10-06T02:14:08+00:00","article_modified_time":"2018-03-10T12:53:18+00:00","og_image":[{"url":"https:\/\/docs.google.com\/spreadsheets\/d\/1uNhwwN0k2MjefjqkG688za10W7oHKiJvQH0guwLQsKI\/embed\/oimg?oid=3&amp;zx=6nwljxc1suj0","type":"","width":"","height":""}],"author":"hrbrmstr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"hrbrmstr","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rud.is\/b\/2012\/10\/05\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2012\/10\/05\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"DIY ZeroAccess GeoIP Visualizations :: Back To The Basics","datePublished":"2012-10-06T02:14:08+00:00","dateModified":"2018-03-10T12:53:18+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2012\/10\/05\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\/"},"wordCount":366,"commentCount":0,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"image":{"@id":"https:\/\/rud.is\/b\/2012\/10\/05\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\/#primaryimage"},"thumbnailUrl":"https:\/\/docs.google.com\/spreadsheets\/d\/1uNhwwN0k2MjefjqkG688za10W7oHKiJvQH0guwLQsKI\/embed\/oimg?oid=3&amp;zx=6nwljxc1suj0","articleSection":["Charts &amp; Graphs"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2012\/10\/05\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2012\/10\/05\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\/","url":"https:\/\/rud.is\/b\/2012\/10\/05\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\/","name":"DIY ZeroAccess GeoIP Visualizations :: Back To The Basics - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rud.is\/b\/2012\/10\/05\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\/#primaryimage"},"image":{"@id":"https:\/\/rud.is\/b\/2012\/10\/05\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\/#primaryimage"},"thumbnailUrl":"https:\/\/docs.google.com\/spreadsheets\/d\/1uNhwwN0k2MjefjqkG688za10W7oHKiJvQH0guwLQsKI\/embed\/oimg?oid=3&amp;zx=6nwljxc1suj0","datePublished":"2012-10-06T02:14:08+00:00","dateModified":"2018-03-10T12:53:18+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2012\/10\/05\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2012\/10\/05\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rud.is\/b\/2012\/10\/05\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\/#primaryimage","url":"https:\/\/docs.google.com\/spreadsheets\/d\/1uNhwwN0k2MjefjqkG688za10W7oHKiJvQH0guwLQsKI\/embed\/oimg?oid=3&amp;zx=6nwljxc1suj0","contentUrl":"https:\/\/docs.google.com\/spreadsheets\/d\/1uNhwwN0k2MjefjqkG688za10W7oHKiJvQH0guwLQsKI\/embed\/oimg?oid=3&amp;zx=6nwljxc1suj0"},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2012\/10\/05\/diy-zeroaccess-geoip-visualizations-back-to-the-basics\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"DIY ZeroAccess GeoIP Visualizations :: Back To The Basics"}]},{"@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-qa","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":2510,"url":"https:\/\/rud.is\/b\/2013\/05\/24\/re-imagining-panda_securitys-q1-2013-report-pie-charts\/","url_meta":{"origin":1622,"position":0},"title":"Re-imagining  @panda_security&#8217;s Q1 2013 Report Pie Charts","author":"hrbrmstr","date":"2013-05-24","format":false,"excerpt":"We infosec folk eat up industry reports and most of us have no doubt already gobbled up @panda_security's recently released [Q1 2013 Report](http:\/\/press.pandasecurity.com\/wp-content\/uploads\/2010\/05\/PandaLabs-Quaterly-Report.pdf) [PDF]. It's a good read (so go ahead and read it, we'll still be here!) and I was really happy to see a nicely stylized chart in\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":2448,"url":"https:\/\/rud.is\/b\/2013\/04\/13\/pc-maker-slopegraph-more-functional-table-one-last-time\/","url_meta":{"origin":1622,"position":1},"title":"PC Maker Slopegraph + More Functional Table (One Last Time)","author":"hrbrmstr","date":"2013-04-13","format":false,"excerpt":"Now that I'm back in the US and relaxing, I can take time for one final blather on the [PC Maker Slopegraph](http:\/\/rud.is\/b\/2013\/04\/11\/ugly-tables-vs-slopegraphs-pc-maker-shipments-marketshare\/) post from earlier in the week. Slopegraphs can be quite long depending on the increment between discrete entries (as I've [pointed out before](http:\/\/rud.is\/b\/2012\/06\/07\/slopegraphs-in-python-exploring-binningrounding\/)). You either need to do\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":3340,"url":"https:\/\/rud.is\/b\/2015\/03\/20\/fixing-colors-proportions-in-jerusalem-post-election-graphics\/","url_meta":{"origin":1622,"position":2},"title":"Fixing Colors &#038; Proportions in Jerusalem Post Election Graphics","author":"hrbrmstr","date":"2015-03-20","format":false,"excerpt":"Vis expert Naomi Robbins did an excellent [critique](http:\/\/www.forbes.com\/sites\/naomirobbins\/2015\/03\/19\/color-problems-with-figures-from-the-jerusalem-post\/) of the [graphics](http:\/\/www.jpost.com\/Israel-Elections\/Analysis-The-Israel-election-decided-by-one-vote-394229) that went along with an article on Israeli election in the Jerusalem Post. Non-uniform and color-blind-unfriendly categorical colors and disproportionate arc sizes are definitely three substantial issues in that series of visualizations. We can rectify all of them with\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":3364,"url":"https:\/\/rud.is\/b\/2015\/03\/30\/3364\/","url_meta":{"origin":1622,"position":3},"title":"A look at airline crashes in R with googlesheets, dplyr &#038; ggplot2","author":"hrbrmstr","date":"2015-03-30","format":false,"excerpt":"Over on The DO Loop, @RickWicklin does a nice job [visualizing the causes of airline crashes](http:\/\/blogs.sas.com\/content\/iml\/2015\/03\/30\/visualizing-airline-crashes\/) in SAS using a mosaic plot. More often than not, I find mosaic plots can be a bit difficult to grok, but Rick's use was spot on and I believe it shows the data\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":1705,"url":"https:\/\/rud.is\/b\/2012\/10\/22\/putting-cybercrime-infographics-behind-bars\/","url_meta":{"origin":1622,"position":4},"title":"Putting Cybercrime [Infographics] Behind Bars","author":"metricshulk","date":"2012-10-22","format":false,"excerpt":"HP & the Ponemon Institute have released their third annual \"Cost of Cybercrime\" report and the web wizards at HP have given us an infographic from it: (You can see the full size one at the above link) While some designers may think that infographic visualizations are not subject to\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":3127,"url":"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/","url_meta":{"origin":1622,"position":5},"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":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/1622","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=1622"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/1622\/revisions"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=1622"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=1622"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=1622"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}