

{"id":1213,"date":"2012-06-07T17:32:06","date_gmt":"2012-06-07T22:32:06","guid":{"rendered":"http:\/\/rud.is\/b\/?p=1213"},"modified":"2018-03-10T07:51:48","modified_gmt":"2018-03-10T12:51:48","slug":"slopegraphs-in-python-log-scales-spam-data-analysis","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2012\/06\/07\/slopegraphs-in-python-log-scales-spam-data-analysis\/","title":{"rendered":"Slopegraphs in Python \u2013 Log Scales &#038; Spam Data Analysis"},"content":{"rendered":"<p>Given the focus on actual development of the PySlopegraph tool in most of the blog posts of late, folks may be wondering why an infosec\/inforisk guy is obsessing so much on a tool and not talking security. Besides the fixation on filling a void and promoting an underused visualization tool, I do believe there is a place for slopegraphs in infosec data analysis and will utilize some data from McAfee&#8217;s recent <span class=\"removed_link\" title=\"https:\/\/www.mcafee.com\/us\/resources\/reports\/rp-quarterly-threat-q1-2012.pdf\">Q1 2012 Threat Report<\/span> [PDF] to illustrate how one might use slopegraphs in interpreting the &#8220;Spam Volume&#8221; data presented in the &#8220;Messaging Threats&#8221; section (pages 11 &amp; 12 of the report).<\/p>\n<p>The report shows individual graphs of spam volume per country from April of 2011 through March of 2012. Each individual graph conveys useful information, but I put together two slopegraphs that each show alternate and aggregate views which let you compare spam volume data relative to each country (versus just in-country).<\/p>\n<p>When first doing this exploration, the scale problem reared it&#8217;s ugly head again since the United States is a <i>huge<\/i> spam outlier and causes the chart to be as tall as my youngest son when printed. I <em>really<\/em> wanted to show relative spam volume between countries as well as the increase or decrease between years in one chart and \u2014 after chatting with @maximumyin a bit \u2014 decided to test out using a log scale option for the charting (<i>click for larger image<\/i>):<\/p>\n<p><center><a target=\"_slopegraph\"href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2012\/06\/spam1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1216\" data-permalink=\"https:\/\/rud.is\/b\/2012\/06\/07\/slopegraphs-in-python-log-scales-spam-data-analysis\/spam-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2012\/06\/spam1.png?fit=1227%2C2471&amp;ssl=1\" data-orig-size=\"1227,2471\" 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;}\" data-image-title=\"spam\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2012\/06\/spam1.png?fit=508%2C1024&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2012\/06\/spam1.png?resize=508%2C1024&#038;ssl=1\" alt=\"\" title=\"spam\" width=\"508\" height=\"1024\" class=\"aligncenter size-large wp-image-1216\" srcset=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2012\/06\/spam1.png?resize=508%2C1024&amp;ssl=1 508w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2012\/06\/spam1.png?w=1227&amp;ssl=1 1227w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2012\/06\/spam1.png?w=1020&amp;ssl=1 1020w\" sizes=\"auto, (max-width: 508px) 100vw, 508px\" \/><\/a><\/center><\/p>\n<p>This chart \u2014 Spam Volume by Country \u2014 instantly shows that:<\/p>\n<ul>\n<li>overall volume has declined for most countries<\/li>\n<li>two countries have remained steady<\/li>\n<li>one country (Germany) has increased<\/li>\n<\/ul>\n<p>The next chart \u2013 Spam Volume Percentage by Country \u2014 also needed to be presented on a log scale and has some equally compelling information:<\/p>\n<p><center><a target=\"_slopegraph\" href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2012\/06\/spam-percent.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1219\" data-permalink=\"https:\/\/rud.is\/b\/2012\/06\/07\/slopegraphs-in-python-log-scales-spam-data-analysis\/spam-percent\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2012\/06\/spam-percent.png?fit=1153%2C2773&amp;ssl=1\" data-orig-size=\"1153,2773\" 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;}\" data-image-title=\"spam-percent\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2012\/06\/spam-percent.png?fit=425%2C1024&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2012\/06\/spam-percent.png?resize=425%2C1024&#038;ssl=1\" alt=\"\" title=\"spam-percent\" width=\"425\" height=\"1024\" class=\"aligncenter size-large wp-image-1219\" srcset=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2012\/06\/spam-percent.png?resize=425%2C1024&amp;ssl=1 425w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2012\/06\/spam-percent.png?resize=124%2C300&amp;ssl=1 124w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2012\/06\/spam-percent.png?zoom=2&amp;resize=425%2C1024&amp;ssl=1 850w\" sizes=\"auto, (max-width: 425px) 100vw, 425px\" \/><\/a><\/center><\/p>\n<p>Despite holding steady count-wise, the United States percentage of global spam actually increased and is joined by seven other countries, with Germany having the second largest percentage increase. Both charts present an opportunity to further explore <i>why<\/i> the values changed (since the best metrics are supposed to both inform and be actionable in some way).<\/p>\n<p>I&#8217;m going to extract some more data from the McAfee report and some other security reports to show how slopegraphs can be used to interpret the data. Feedback on both the views and the use of the log scale would be greatly appreciated by general data scientists as well as those in the infosec community.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Given the focus on actual development of the PySlopegraph tool in most of the blog posts of late, folks may be wondering why an infosec\/inforisk guy is obsessing so much on a tool and not talking security. Besides the fixation on filling a void and promoting an underused visualization tool, I do believe there is [&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,63,3,7,640],"tags":[751,657,658],"class_list":["post-1213","post","type-post","status-publish","format-standard","hentry","category-charts-graphs","category-development","category-information-security","category-programming","category-python-2","tag-slopegraph","tag-table-chart","tag-tufte"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Slopegraphs in Python \u2013 Log Scales &amp; Spam Data Analysis - 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\/06\/07\/slopegraphs-in-python-log-scales-spam-data-analysis\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Slopegraphs in Python \u2013 Log Scales &amp; Spam Data Analysis - rud.is\" \/>\n<meta property=\"og:description\" content=\"Given the focus on actual development of the PySlopegraph tool in most of the blog posts of late, folks may be wondering why an infosec\/inforisk guy is obsessing so much on a tool and not talking security. Besides the fixation on filling a void and promoting an underused visualization tool, I do believe there is [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2012\/06\/07\/slopegraphs-in-python-log-scales-spam-data-analysis\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2012-06-07T22:32:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-03-10T12:51:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/rud.is\/b\/wp-content\/uploads\/2012\/06\/spam1-508x1024.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=\"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\\\/06\\\/07\\\/slopegraphs-in-python-log-scales-spam-data-analysis\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/06\\\/07\\\/slopegraphs-in-python-log-scales-spam-data-analysis\\\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"Slopegraphs in Python \u2013 Log Scales &#038; Spam Data Analysis\",\"datePublished\":\"2012-06-07T22:32:06+00:00\",\"dateModified\":\"2018-03-10T12:51:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/06\\\/07\\\/slopegraphs-in-python-log-scales-spam-data-analysis\\\/\"},\"wordCount\":400,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"image\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/06\\\/07\\\/slopegraphs-in-python-log-scales-spam-data-analysis\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2012\\\/06\\\/spam1-508x1024.png\",\"keywords\":[\"slopegraph\",\"table-chart\",\"tufte\"],\"articleSection\":[\"Charts &amp; Graphs\",\"Development\",\"Information Security\",\"Programming\",\"Python\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/06\\\/07\\\/slopegraphs-in-python-log-scales-spam-data-analysis\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/06\\\/07\\\/slopegraphs-in-python-log-scales-spam-data-analysis\\\/\",\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/06\\\/07\\\/slopegraphs-in-python-log-scales-spam-data-analysis\\\/\",\"name\":\"Slopegraphs in Python \u2013 Log Scales & Spam Data Analysis - rud.is\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/06\\\/07\\\/slopegraphs-in-python-log-scales-spam-data-analysis\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/06\\\/07\\\/slopegraphs-in-python-log-scales-spam-data-analysis\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2012\\\/06\\\/spam1-508x1024.png\",\"datePublished\":\"2012-06-07T22:32:06+00:00\",\"dateModified\":\"2018-03-10T12:51:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/06\\\/07\\\/slopegraphs-in-python-log-scales-spam-data-analysis\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/06\\\/07\\\/slopegraphs-in-python-log-scales-spam-data-analysis\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/06\\\/07\\\/slopegraphs-in-python-log-scales-spam-data-analysis\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2012\\\/06\\\/spam1.png?fit=1227%2C2471&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2012\\\/06\\\/spam1.png?fit=1227%2C2471&ssl=1\",\"width\":\"1227\",\"height\":\"2471\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2012\\\/06\\\/07\\\/slopegraphs-in-python-log-scales-spam-data-analysis\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/rud.is\\\/b\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Slopegraphs in Python \u2013 Log Scales &#038; Spam Data Analysis\"}]},{\"@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":"Slopegraphs in Python \u2013 Log Scales & Spam Data Analysis - 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\/06\/07\/slopegraphs-in-python-log-scales-spam-data-analysis\/","og_locale":"en_US","og_type":"article","og_title":"Slopegraphs in Python \u2013 Log Scales & Spam Data Analysis - rud.is","og_description":"Given the focus on actual development of the PySlopegraph tool in most of the blog posts of late, folks may be wondering why an infosec\/inforisk guy is obsessing so much on a tool and not talking security. Besides the fixation on filling a void and promoting an underused visualization tool, I do believe there is [&hellip;]","og_url":"https:\/\/rud.is\/b\/2012\/06\/07\/slopegraphs-in-python-log-scales-spam-data-analysis\/","og_site_name":"rud.is","article_published_time":"2012-06-07T22:32:06+00:00","article_modified_time":"2018-03-10T12:51:48+00:00","og_image":[{"url":"https:\/\/rud.is\/b\/wp-content\/uploads\/2012\/06\/spam1-508x1024.png","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\/06\/07\/slopegraphs-in-python-log-scales-spam-data-analysis\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2012\/06\/07\/slopegraphs-in-python-log-scales-spam-data-analysis\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"Slopegraphs in Python \u2013 Log Scales &#038; Spam Data Analysis","datePublished":"2012-06-07T22:32:06+00:00","dateModified":"2018-03-10T12:51:48+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2012\/06\/07\/slopegraphs-in-python-log-scales-spam-data-analysis\/"},"wordCount":400,"commentCount":0,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"image":{"@id":"https:\/\/rud.is\/b\/2012\/06\/07\/slopegraphs-in-python-log-scales-spam-data-analysis\/#primaryimage"},"thumbnailUrl":"https:\/\/rud.is\/b\/wp-content\/uploads\/2012\/06\/spam1-508x1024.png","keywords":["slopegraph","table-chart","tufte"],"articleSection":["Charts &amp; Graphs","Development","Information Security","Programming","Python"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2012\/06\/07\/slopegraphs-in-python-log-scales-spam-data-analysis\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2012\/06\/07\/slopegraphs-in-python-log-scales-spam-data-analysis\/","url":"https:\/\/rud.is\/b\/2012\/06\/07\/slopegraphs-in-python-log-scales-spam-data-analysis\/","name":"Slopegraphs in Python \u2013 Log Scales & Spam Data Analysis - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rud.is\/b\/2012\/06\/07\/slopegraphs-in-python-log-scales-spam-data-analysis\/#primaryimage"},"image":{"@id":"https:\/\/rud.is\/b\/2012\/06\/07\/slopegraphs-in-python-log-scales-spam-data-analysis\/#primaryimage"},"thumbnailUrl":"https:\/\/rud.is\/b\/wp-content\/uploads\/2012\/06\/spam1-508x1024.png","datePublished":"2012-06-07T22:32:06+00:00","dateModified":"2018-03-10T12:51:48+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2012\/06\/07\/slopegraphs-in-python-log-scales-spam-data-analysis\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2012\/06\/07\/slopegraphs-in-python-log-scales-spam-data-analysis\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rud.is\/b\/2012\/06\/07\/slopegraphs-in-python-log-scales-spam-data-analysis\/#primaryimage","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2012\/06\/spam1.png?fit=1227%2C2471&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2012\/06\/spam1.png?fit=1227%2C2471&ssl=1","width":"1227","height":"2471"},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2012\/06\/07\/slopegraphs-in-python-log-scales-spam-data-analysis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"Slopegraphs in Python \u2013 Log Scales &#038; Spam Data Analysis"}]},{"@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-jz","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":1181,"url":"https:\/\/rud.is\/b\/2012\/06\/05\/slopegraphs-in-python-slope-colors\/","url_meta":{"origin":1213,"position":0},"title":"Slopegraphs in Python \u2013 Slope Colors","author":"hrbrmstr","date":"2012-06-05","format":false,"excerpt":"As the codebase gets closer to the 1.0 stretch we now have the addition of slope colors for when values go up\/down or remain constant between points. The code still only handles two columns of data, but the intent is for each segment to also be colored appropriately (up\/down\/same) 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":1334,"url":"https:\/\/rud.is\/b\/2012\/06\/20\/slopegraphs-in-python-failed-states-index-part-1\/","url_meta":{"origin":1213,"position":1},"title":"Slopegraphs in Python \u2013\u00a0Failed States Index (Part 1)","author":"hrbrmstr","date":"2012-06-20","format":false,"excerpt":"The Fund For Peace (FFP) and Foreign Policy jointly released the 2012 version of the \"failed states index\" (FSI). From the FFP site, the FSI: \u2026focuses on the indicators of risk and is based on thousands of articles and reports that are processed by our CAST Software from electronically available\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":2823,"url":"https:\/\/rud.is\/b\/2013\/12\/02\/slopegraph-workbenchworkshop-in-d3\/","url_meta":{"origin":1213,"position":2},"title":"Slopegraph Workbench\/Workshop in D3","author":"hrbrmstr","date":"2013-12-02","format":false,"excerpt":"I've been getting a huge uptick in views of my Slopegraphs in Python post and I think it's due to @edwardtufte's recent slopegraph contest announcement. The original Python code is crufty and a mess mostly due to the intermittent attention to it, wanting to reduce dependencies and hacking vs programming.\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":2443,"url":"https:\/\/rud.is\/b\/2013\/04\/12\/use-datawrapper-for-slopegraphs\/","url_meta":{"origin":1213,"position":3},"title":"Use @datawrapper For Slopegraphs","author":"hrbrmstr","date":"2013-04-12","format":false,"excerpt":"While not perfect, I noticed that it was possible to make a pretty decent slopegraph over at [Datawrapper](http:\/\/datawrapper.de\/) as I was poking at some new features they announced recently. As an example, I ran one of the charts from my [most recent](http:\/\/rud.is\/b\/2013\/04\/11\/ugly-tables-vs-slopegraphs-pc-maker-shipments-marketshare\/) blog post as an example. If they had\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":1191,"url":"https:\/\/rud.is\/b\/2012\/06\/07\/slopegraphs-in-python-exploring-binningrounding\/","url_meta":{"origin":1213,"position":4},"title":"Slopegraphs in Python \u2013 Exploring Binning\/Rounding","author":"hrbrmstr","date":"2012-06-07","format":false,"excerpt":"One of the last items for the 1.0 release is support for multiple columns of data. That will require some additional refactoring, so I've been procrastinating by exploring the recent \"fudging\" discovery. Despite claims to the contrary on other sites, there are more folks playing with slopegraphs than you might\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":1115,"url":"https:\/\/rud.is\/b\/2012\/05\/29\/slopegraphs-in-python-colors-fonts-alignment\/","url_meta":{"origin":1213,"position":5},"title":"Slopegraphs In Python \u2013\u00a0colors, fonts &#038; alignment","author":"hrbrmstr","date":"2012-05-29","format":false,"excerpt":"On the heels of last evening's release of Slopegraphs in Python post comes some minor tweaks: Complete alignment control of labels & and values Colors (for background, lines, labels & values) \u2014 I picked a random pattern from Adobe's Kuler A font change (to prove width calculations work) \u2026and a\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\/1213","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=1213"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/1213\/revisions"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=1213"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=1213"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=1213"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}