

{"id":2288,"date":"2013-03-10T23:11:00","date_gmt":"2013-03-11T04:11:00","guid":{"rendered":"http:\/\/rud.is\/b\/?p=2288"},"modified":"2017-04-02T22:51:49","modified_gmt":"2017-04-03T03:51:49","slug":"visualizing-risky-words-part-3","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/","title":{"rendered":"Visualizing Risky Words \u2014 Part 3"},"content":{"rendered":"<p>The DST changeover in the US has made today a fairly strange one, especially when combined with a very busy non-computing day yesterday. That strangeness manifest as a need to take the D3 heatmap idea mentioned in the [previous post](http:\/\/rud.is\/b\/2013\/03\/09\/visualizing-risky-words-part-2\/) and actually (mostly) implement it. Folks just coming to this thread may want to start with the [first post](http:\/\/rud.is\/b\/2013\/03\/06\/visualizing-risky-words\/) in the series.<\/p>\n<p>I did a quick extraction of the R <code>TermDocumentMatrix<\/code> with nested for loops and then extracted the original texts of the corpus and put them into some javascript variables along with some D3 code to show how to do a [rudimentary interactive heatmap](http:\/\/rud.is\/d3\/vzwordshm\/).<\/p>\n<p><center><div id=\"attachment_2290\" style=\"width: 540px\" class=\"wp-caption aligncenter\"><a target=\"_blank\" href=\"https:\/\/rud.is\/d3\/vzwordshm\/\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2290\" data-attachment-id=\"2290\" data-permalink=\"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/screenshot_3_10_13_11_33_pm\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/03\/Screenshot_3_10_13_11_33_PM.png?fit=1036%2C667&amp;ssl=1\" data-orig-size=\"1036,667\" 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=\"Screenshot_3_10_13_11_33_PM\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;(click for larger)&lt;\/p&gt;\n\" data-medium-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/03\/Screenshot_3_10_13_11_33_PM.png?fit=300%2C193&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/03\/Screenshot_3_10_13_11_33_PM.png?fit=510%2C328&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/03\/Screenshot_3_10_13_11_33_PM.png?resize=510%2C328&#038;ssl=1\" alt=\"(click for larger)\" width=\"510\" height=\"328\" class=\"size-large wp-image-2290\" srcset=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/03\/Screenshot_3_10_13_11_33_PM.png?resize=530%2C341&amp;ssl=1 530w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/03\/Screenshot_3_10_13_11_33_PM.png?resize=150%2C96&amp;ssl=1 150w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/03\/Screenshot_3_10_13_11_33_PM.png?resize=300%2C193&amp;ssl=1 300w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/03\/Screenshot_3_10_13_11_33_PM.png?resize=535%2C344&amp;ssl=1 535w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/03\/Screenshot_3_10_13_11_33_PM.png?w=1036&amp;ssl=1 1036w\" sizes=\"auto, (max-width: 510px) 100vw, 510px\" \/><\/a><p id=\"caption-attachment-2290\" class=\"wp-caption-text\">(click for live demo)<\/p><\/div><\/center><\/p>\n<p>As you mouse over each of the tiles they will be highlighted and the word\/document will be displayed along with the frequency count. Click on the tile and the text will appear with the highlighted word.<\/p>\n<p>Some caveats:<\/p>\n<p>&#8211; The heatmap looks a bit different from the R one in part 2 as the terms\/keywords are in alphabetical order.<br \/>\n&#8211; There are no column or row headers. I won&#8217;t claim anything but laziness, though the result does look a bit cleaner this way.<br \/>\n&#8211; I didn&#8217;t bother extracting the stemming results (it&#8217;s kind of a pain), so not all of the keywords will be highlighted when you select a tile.<br \/>\n&#8211; It&#8217;s one, big HTML document complete with javascript &#038; data. That&#8217;s not a recommended practice in production code but it will make it easier for folks to play around with.<br \/>\n&#8211; The HTML is not commented well, but there&#8217;s really not much of it. The code that makes the heatmap is pretty straightforward if you even have a rough familiarity with D3. Basically, enumerate the data, generating a colored tile for each row\/col entry and then mapping click &#038; mouseover\/out events to each generated SVG element.<br \/>\n&#8211; I also use jQuery in the code, but that&#8217;s not a real dependency. I just like using jQuery selectors for non-D3 graphics work. It bulks up the document, so use them together wisely. NOTE: If you don&#8217;t want to use jQuery, you&#8217;ll need to change the selector code.<\/p>\n<p>Drop a note in the comments if you do use the base example and improve on it or if you have any questions on the code. For those interested, I&#8217;ll be putting all the code from the &#8220;Visualizing Risky Words&#8221; posts into a github repository at the end of the series.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The DST changeover in the US has made today a fairly strange one, especially when combined with a very busy non-computing day yesterday. That strangeness manifest as a need to take the D3 heatmap idea mentioned in the [previous post](http:\/\/rud.is\/b\/2013\/03\/09\/visualizing-risky-words-part-2\/) and actually (mostly) implement it. Folks just coming to this thread may want to start [&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":[666,677,678,673,674,3],"tags":[],"class_list":["post-2288","post","type-post","status-publish","format-standard","hentry","category-d3","category-data-analysis-2","category-data-visualization","category-datavis-2","category-dataviz","category-information-security"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Visualizing Risky Words \u2014 Part 3 - 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\/2013\/03\/10\/visualizing-risky-words-part-3\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Visualizing Risky Words \u2014 Part 3 - rud.is\" \/>\n<meta property=\"og:description\" content=\"The DST changeover in the US has made today a fairly strange one, especially when combined with a very busy non-computing day yesterday. That strangeness manifest as a need to take the D3 heatmap idea mentioned in the [previous post](http:\/\/rud.is\/b\/2013\/03\/09\/visualizing-risky-words-part-2\/) and actually (mostly) implement it. Folks just coming to this thread may want to start [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2013-03-11T04:11:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-04-03T03:51:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/rud.is\/b\/wp-content\/uploads\/2013\/03\/Screenshot_3_10_13_11_33_PM-530x341.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\/2013\/03\/10\/visualizing-risky-words-part-3\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"Visualizing Risky Words \u2014 Part 3\",\"datePublished\":\"2013-03-11T04:11:00+00:00\",\"dateModified\":\"2017-04-03T03:51:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/\"},\"wordCount\":442,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"image\":{\"@id\":\"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/rud.is\/b\/wp-content\/uploads\/2013\/03\/Screenshot_3_10_13_11_33_PM-530x341.png\",\"articleSection\":[\"d3\",\"Data Analysis\",\"Data Visualization\",\"DataVis\",\"DataViz\",\"Information Security\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/\",\"url\":\"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/\",\"name\":\"Visualizing Risky Words \u2014 Part 3 - rud.is\",\"isPartOf\":{\"@id\":\"https:\/\/rud.is\/b\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/rud.is\/b\/wp-content\/uploads\/2013\/03\/Screenshot_3_10_13_11_33_PM-530x341.png\",\"datePublished\":\"2013-03-11T04:11:00+00:00\",\"dateModified\":\"2017-04-03T03:51:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/03\/Screenshot_3_10_13_11_33_PM.png?fit=1036%2C667&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/03\/Screenshot_3_10_13_11_33_PM.png?fit=1036%2C667&ssl=1\",\"width\":1036,\"height\":667,\"caption\":\"(click for larger)\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/rud.is\/b\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Visualizing Risky Words \u2014 Part 3\"}]},{\"@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":"Visualizing Risky Words \u2014 Part 3 - 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\/2013\/03\/10\/visualizing-risky-words-part-3\/","og_locale":"en_US","og_type":"article","og_title":"Visualizing Risky Words \u2014 Part 3 - rud.is","og_description":"The DST changeover in the US has made today a fairly strange one, especially when combined with a very busy non-computing day yesterday. That strangeness manifest as a need to take the D3 heatmap idea mentioned in the [previous post](http:\/\/rud.is\/b\/2013\/03\/09\/visualizing-risky-words-part-2\/) and actually (mostly) implement it. Folks just coming to this thread may want to start [&hellip;]","og_url":"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/","og_site_name":"rud.is","article_published_time":"2013-03-11T04:11:00+00:00","article_modified_time":"2017-04-03T03:51:49+00:00","og_image":[{"url":"https:\/\/rud.is\/b\/wp-content\/uploads\/2013\/03\/Screenshot_3_10_13_11_33_PM-530x341.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\/2013\/03\/10\/visualizing-risky-words-part-3\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"Visualizing Risky Words \u2014 Part 3","datePublished":"2013-03-11T04:11:00+00:00","dateModified":"2017-04-03T03:51:49+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/"},"wordCount":442,"commentCount":1,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"image":{"@id":"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/#primaryimage"},"thumbnailUrl":"https:\/\/rud.is\/b\/wp-content\/uploads\/2013\/03\/Screenshot_3_10_13_11_33_PM-530x341.png","articleSection":["d3","Data Analysis","Data Visualization","DataVis","DataViz","Information Security"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/","url":"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/","name":"Visualizing Risky Words \u2014 Part 3 - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/#primaryimage"},"image":{"@id":"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/#primaryimage"},"thumbnailUrl":"https:\/\/rud.is\/b\/wp-content\/uploads\/2013\/03\/Screenshot_3_10_13_11_33_PM-530x341.png","datePublished":"2013-03-11T04:11:00+00:00","dateModified":"2017-04-03T03:51:49+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/#primaryimage","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/03\/Screenshot_3_10_13_11_33_PM.png?fit=1036%2C667&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/03\/Screenshot_3_10_13_11_33_PM.png?fit=1036%2C667&ssl=1","width":1036,"height":667,"caption":"(click for larger)"},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2013\/03\/10\/visualizing-risky-words-part-3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"Visualizing Risky Words \u2014 Part 3"}]},{"@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-AU","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":2314,"url":"https:\/\/rud.is\/b\/2013\/03\/12\/visualizing-risky-words-part-4-d3-word-trees\/","url_meta":{"origin":2288,"position":0},"title":"Visualizing Risky Words \u2014 Part 4 (D3 Word Trees)","author":"hrbrmstr","date":"2013-03-12","format":false,"excerpt":"This is a fourth post in my [Visualizing Risky Words](http:\/\/rud.is\/b\/2013\/03\/06\/visualizing-risky-words\/) series. You'll need to read starting from that link for context if you're just jumping in now. I was going to create a rudimentary version of an interactive word tree for this, but the extremely talented @jasondavies (I marvel especially\u2026","rel":"","context":"In &quot;d3&quot;","block_context":{"text":"d3","link":"https:\/\/rud.is\/b\/category\/d3\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1507,"url":"https:\/\/rud.is\/b\/2012\/07\/12\/ssh-password-time-series-heatmap-in-d3\/","url_meta":{"origin":2288,"position":1},"title":"SSH Password Time-series Heatmap In D3","author":"hrbrmstr","date":"2012-07-12","format":false,"excerpt":"In @jayjacobs' latest post on SSH honeypot passsword analysis he shows some spiffy visualizations from crunching the data with Tableau. While I've joked with him and called them \"robocharts\", the reality is that Tableau does let you work on visualizing the answers to questions quickly without having to go into\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":2245,"url":"https:\/\/rud.is\/b\/2013\/03\/06\/visualizing-risky-words\/","url_meta":{"origin":2288,"position":2},"title":"Visualizing Risky Words","author":"hrbrmstr","date":"2013-03-06","format":false,"excerpt":"NOTE: Parts [2], [3] & [4] are also now up. Inspired by a post by @bfist who created the following word cloud in Ruby from VZ RISK INTSUM posts (visit the link or select the visualization to go to the post): I \u2665 word clouds as much as anyone and\u2026","rel":"","context":"In &quot;d3&quot;","block_context":{"text":"d3","link":"https:\/\/rud.is\/b\/category\/d3\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2262,"url":"https:\/\/rud.is\/b\/2013\/03\/09\/visualizing-risky-words-part-2\/","url_meta":{"origin":2288,"position":3},"title":"Visualizing Risky Words \u2014 Part 2","author":"hrbrmstr","date":"2013-03-09","format":false,"excerpt":"This is a follow-up to my [Visualizing Risky Words](http:\/\/rud.is\/b\/2013\/03\/06\/visualizing-risky-words\/) post. You'll need to read that for context if you're just jumping in now. Full R code for the generated images (which are pretty large) is at the end. Aesthetics are the primary reason for using a word cloud, though one\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":2728,"url":"https:\/\/rud.is\/b\/2013\/09\/28\/obamacare-jobs-r-d3\/","url_meta":{"origin":2288,"position":4},"title":"Visualizing &#8220;ObamaCare-related&#8221; Job Cuts","author":"hrbrmstr","date":"2013-09-28","format":false,"excerpt":"UPDATE: Added some extra visualization elements since this post went live. New select menu and hover text for individual job impact detail lines in the table. I was reviewing RSS feeds when I came across this story about \"ObamaCare Employer Mandate: A List Of Cuts To Work Hours, Jobs\" over\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":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/09\/oc-snap.png.png?fit=945%2C660&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/09\/oc-snap.png.png?fit=945%2C660&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/09\/oc-snap.png.png?fit=945%2C660&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/09\/oc-snap.png.png?fit=945%2C660&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":2816,"url":"https:\/\/rud.is\/b\/2013\/11\/28\/one-more-timemapping-maine-power-outages-with-d3\/","url_meta":{"origin":2288,"position":5},"title":"One More Time\u2026Mapping Maine Power Outages with D3","author":"hrbrmstr","date":"2013-11-28","format":false,"excerpt":"It started with a local R version and migrated to a Shiny version and is now in full D3 glory. Some down time gave me the opportunity to start a basic D3 version of the outage map, but it needs a bit of work as it relies on a page\u2026","rel":"","context":"In &quot;d3&quot;","block_context":{"text":"d3","link":"https:\/\/rud.is\/b\/category\/d3\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/11\/Central_Maine_Power_Live_Outage_Map-2.png?fit=757%2C649&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/11\/Central_Maine_Power_Live_Outage_Map-2.png?fit=757%2C649&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/11\/Central_Maine_Power_Live_Outage_Map-2.png?fit=757%2C649&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/11\/Central_Maine_Power_Live_Outage_Map-2.png?fit=757%2C649&ssl=1&resize=700%2C400 2x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/2288","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=2288"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/2288\/revisions"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=2288"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=2288"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=2288"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}