

{"id":13938,"date":"2023-04-12T04:23:29","date_gmt":"2023-04-12T09:23:29","guid":{"rendered":"https:\/\/rud.is\/b\/?p=13938"},"modified":"2023-04-12T04:23:29","modified_gmt":"2023-04-12T09:23:29","slug":"make-solar-system-plots-with-ggsolar","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/","title":{"rendered":"Make &#8220;Solar System&#8221; Plots With {ggsolar}"},"content":{"rendered":"<p>I was cranking out a <a href=\"https:\/\/www.greynoise.io\/blog\/harness-the-power-of-greynoise-integrations-to-enhance-your-cybersecurity-posture\">blog post for work<\/a> earlier this week that shows off just how many integrations our platform has. I won&#8217;t blather about that content here, but as I was working on it, I really wanted to show off all the integrations.<\/p>\n<p>A table seemed far too boring.<\/p>\n<p>Several categorized unordered lists seemed too unwieldy.<\/p>\n<p>Then, it dawned on me that I could make a visual representation of all the integration partners we have by thinking of the entire integrations&#8217; ecosystem as a \u201cuniverse\u201d with each category being a \u201csolar system\u201d of that universe.<\/p>\n<p>I&#8217;ve been leaning more heavily on javsascript for datavis these days, but I will always be more comfortable in {ggplot2}, so I headed to R to design a way to:<\/p>\n<ul>\n<li>generate concentric orbits for \u201cn\u201d solar systems<\/li>\n<li>randomize the placement of the planets in each ring<\/li>\n<li>make a decent plot!<\/li>\n<\/ul>\n<p>I worked with one of the most amazing designers on the planet <em>(heh)<\/em> to come up with some stellar <em>(heh)<\/em> styling for it, and this was the result:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"13939\" data-permalink=\"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/gn-universe\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?fit=1600%2C1202&amp;ssl=1\" data-orig-size=\"1600,1202\" 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=\"gn-universe\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?fit=300%2C225&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?fit=510%2C383&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?resize=510%2C383&#038;ssl=1\" alt=\"5 solar system panels\" width=\"510\" height=\"383\" class=\"aligncenter size-full wp-image-13939\" srcset=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?w=1600&amp;ssl=1 1600w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?resize=300%2C225&amp;ssl=1 300w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?resize=530%2C398&amp;ssl=1 530w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?resize=150%2C113&amp;ssl=1 150w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?resize=768%2C577&amp;ssl=1 768w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?resize=1536%2C1154&amp;ssl=1 1536w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?resize=500%2C376&amp;ssl=1 500w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?resize=1200%2C902&amp;ssl=1 1200w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?resize=400%2C301&amp;ssl=1 400w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?resize=800%2C601&amp;ssl=1 800w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?resize=200%2C150&amp;ssl=1 200w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?w=1020&amp;ssl=1 1020w\" sizes=\"auto, (max-width: 510px) 100vw, 510px\" \/><\/a><\/p>\n<p>I took the styling guidance and wrapped the messy, individual functions I had into a new {ggsolar} package, you can find at <a href=\"https:\/\/github.com\/hrbrmstr\/ggsolar\">https:\/\/github.com\/hrbrmstr\/ggsolar<\/a>.<\/p>\n<p>It&#8217;s pretty raw, and I need to \u201cgeomify\u201d it at some point, but it has<\/p>\n<ul>\n<li>a function to generate the concentric circle polygons<\/li>\n<li>another one to identify a random point on each ring<\/li>\n<li>a naive plotting function, and <\/li>\n<li>a theme cleanup function for decent output.<\/li>\n<\/ul>\n<p>The default is to generate uniformly distributed concentric circles, but you have the option of supplying a custom radii vector to make it more \u201creal\u201d\/\u201csolar-sysetm-y\u201d.<\/p>\n<p>Here&#8217;s the general flow:<\/p>\n<pre><code class=\"language-r\"># sol_planets is a built in vector of our system's planet names\nsol_orbits &lt;- generate_orbits(sol_planets)\n\nset.seed(1323) # this produced a decent placements\n\n# naive but it works! You can specify your own point picker, too.\nplaced_planets &lt;- randomize_planet_positions(sol_orbits)\n\n# do the thing!\nplot_orbits(\n  orbits = sol_orbits, \n  planet_positions = placed_planets,\n  label_planets = TRUE,\n  label_family = hrbrthemes::font_es_bold\n) +\n  hrbrthemes::theme_ipsum_es(grid=\"\") +\n  coord_equal() +\n  labs(\n    title = \"Sol\",\n    caption = \"Pluto is 100% a planet\"\n  ) +\n  theme_enhance_solar()\n<\/code><\/pre>\n<p><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-sol-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"13941\" data-permalink=\"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/readme-sol-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-sol-1.png?fit=1152%2C1152&amp;ssl=1\" data-orig-size=\"1152,1152\" 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=\"README-sol-1\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-sol-1.png?fit=300%2C300&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-sol-1.png?fit=510%2C510&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-sol-1.png?resize=510%2C510&#038;ssl=1\" alt=\"\" width=\"510\" height=\"510\" class=\"aligncenter size-full wp-image-13941\" srcset=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-sol-1.png?w=1152&amp;ssl=1 1152w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-sol-1.png?resize=300%2C300&amp;ssl=1 300w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-sol-1.png?resize=530%2C530&amp;ssl=1 530w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-sol-1.png?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-sol-1.png?resize=768%2C768&amp;ssl=1 768w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-sol-1.png?resize=500%2C500&amp;ssl=1 500w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-sol-1.png?resize=400%2C400&amp;ssl=1 400w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-sol-1.png?resize=800%2C800&amp;ssl=1 800w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-sol-1.png?resize=200%2C200&amp;ssl=1 200w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-sol-1.png?resize=57%2C57&amp;ssl=1 57w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-sol-1.png?resize=72%2C72&amp;ssl=1 72w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-sol-1.png?resize=114%2C114&amp;ssl=1 114w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-sol-1.png?resize=144%2C144&amp;ssl=1 144w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-sol-1.png?resize=96%2C96&amp;ssl=1 96w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-sol-1.png?w=1020&amp;ssl=1 1020w\" sizes=\"auto, (max-width: 510px) 100vw, 510px\" \/><\/a><\/p>\n<h3>Random Systems<\/h3>\n<p>I included a <code>generate_random_planets()<\/code> function that uses a hidden Markov model to  create believable planetary names, so you can now make your own universe with {ggplot2}!<\/p>\n<pre><code class=\"language-r\">set.seed(42)\n(rando_planets &lt;- generate_random_planets(12))\n\nrando_orbits &lt;- generate_orbits(rando_planets)\n\nset.seed(123) # this produced decent placements\n\nplaced_planets &lt;- randomize_planet_positions(rando_orbits)\n\nplot_orbits(\n  orbits = rando_orbits, \n  planet_positions = placed_planets,\n  label_planets = TRUE,\n  label_family = hrbrthemes::font_es_bold\n) +\n  hrbrthemes::theme_ipsum_es(grid=\"\") +\n  coord_equal() +\n  labs(\n    title = \"Rando System\"\n  ) +\n  theme_enhance_solar()\n<\/code><\/pre>\n<p><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-rando-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"13943\" data-permalink=\"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/readme-rando-1\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-rando-1.png?fit=1152%2C1152&amp;ssl=1\" data-orig-size=\"1152,1152\" 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=\"README-rando-1\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-rando-1.png?fit=300%2C300&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-rando-1.png?fit=510%2C510&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-rando-1.png?resize=510%2C510&#038;ssl=1\" alt=\"random system\" width=\"510\" height=\"510\" class=\"aligncenter size-full wp-image-13943\" srcset=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-rando-1.png?w=1152&amp;ssl=1 1152w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-rando-1.png?resize=300%2C300&amp;ssl=1 300w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-rando-1.png?resize=530%2C530&amp;ssl=1 530w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-rando-1.png?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-rando-1.png?resize=768%2C768&amp;ssl=1 768w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-rando-1.png?resize=500%2C500&amp;ssl=1 500w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-rando-1.png?resize=400%2C400&amp;ssl=1 400w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-rando-1.png?resize=800%2C800&amp;ssl=1 800w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-rando-1.png?resize=200%2C200&amp;ssl=1 200w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-rando-1.png?resize=57%2C57&amp;ssl=1 57w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-rando-1.png?resize=72%2C72&amp;ssl=1 72w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-rando-1.png?resize=114%2C114&amp;ssl=1 114w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-rando-1.png?resize=144%2C144&amp;ssl=1 144w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-rando-1.png?resize=96%2C96&amp;ssl=1 96w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/README-rando-1.png?w=1020&amp;ssl=1 1020w\" sizes=\"auto, (max-width: 510px) 100vw, 510px\" \/><\/a><\/p>\n<h3>FIN<\/h3>\n<p>Kick the tyres, use {gganimate} to make some animations, and be the ruler of your own universe! (We&#8217;re going to try to generate team &#8220;org charts&#8221; with these later in the week, so be creative, too!).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I was cranking out a blog post for work earlier this week that shows off just how many integrations our platform has. I won&#8217;t blather about that content here, but as I was working on it, I really wanted to show off all the integrations. A table seemed far too boring. Several categorized unordered lists [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":13939,"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":[753,91],"tags":[],"class_list":["post-13938","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ggplot","category-r"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Make &quot;Solar System&quot; Plots With {ggsolar} - 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\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Make &quot;Solar System&quot; Plots With {ggsolar} - rud.is\" \/>\n<meta property=\"og:description\" content=\"I was cranking out a blog post for work earlier this week that shows off just how many integrations our platform has. I won&#8217;t blather about that content here, but as I was working on it, I really wanted to show off all the integrations. A table seemed far too boring. Several categorized unordered lists [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2023-04-12T09:23:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?fit=1600%2C1202&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"1202\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"hrbrmstr\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"hrbrmstr\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"Make &#8220;Solar System&#8221; Plots With {ggsolar}\",\"datePublished\":\"2023-04-12T09:23:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/\"},\"wordCount\":352,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"image\":{\"@id\":\"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?fit=1600%2C1202&ssl=1\",\"articleSection\":[\"ggplot\",\"R\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/\",\"url\":\"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/\",\"name\":\"Make \\\"Solar System\\\" Plots With {ggsolar} - rud.is\",\"isPartOf\":{\"@id\":\"https:\/\/rud.is\/b\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?fit=1600%2C1202&ssl=1\",\"datePublished\":\"2023-04-12T09:23:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?fit=1600%2C1202&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?fit=1600%2C1202&ssl=1\",\"width\":1600,\"height\":1202,\"caption\":\"5 solar system panels\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/rud.is\/b\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Make &#8220;Solar System&#8221; Plots With {ggsolar}\"}]},{\"@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":"Make \"Solar System\" Plots With {ggsolar} - 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\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/","og_locale":"en_US","og_type":"article","og_title":"Make \"Solar System\" Plots With {ggsolar} - rud.is","og_description":"I was cranking out a blog post for work earlier this week that shows off just how many integrations our platform has. I won&#8217;t blather about that content here, but as I was working on it, I really wanted to show off all the integrations. A table seemed far too boring. Several categorized unordered lists [&hellip;]","og_url":"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/","og_site_name":"rud.is","article_published_time":"2023-04-12T09:23:29+00:00","og_image":[{"width":1600,"height":1202,"url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?fit=1600%2C1202&ssl=1","type":"image\/png"}],"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\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"Make &#8220;Solar System&#8221; Plots With {ggsolar}","datePublished":"2023-04-12T09:23:29+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/"},"wordCount":352,"commentCount":1,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"image":{"@id":"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?fit=1600%2C1202&ssl=1","articleSection":["ggplot","R"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/","url":"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/","name":"Make \"Solar System\" Plots With {ggsolar} - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/#primaryimage"},"image":{"@id":"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?fit=1600%2C1202&ssl=1","datePublished":"2023-04-12T09:23:29+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/#primaryimage","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?fit=1600%2C1202&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?fit=1600%2C1202&ssl=1","width":1600,"height":1202,"caption":"5 solar system panels"},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2023\/04\/12\/make-solar-system-plots-with-ggsolar\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"Make &#8220;Solar System&#8221; Plots With {ggsolar}"}]},{"@type":"WebSite","@id":"https:\/\/rud.is\/b\/#website","url":"https:\/\/rud.is\/b\/","name":"rud.is","description":"&quot;In God we trust. All others must bring data&quot;","publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rud.is\/b\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886","name":"hrbrmstr","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","width":460,"height":460,"caption":"hrbrmstr"},"logo":{"@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1"},"description":"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7","sameAs":["http:\/\/rud.is"],"url":"https:\/\/rud.is\/b\/author\/hrbrmstr\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/gn-universe.png?fit=1600%2C1202&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p23idr-3CO","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":3469,"url":"https:\/\/rud.is\/b\/2015\/06\/19\/do-something-nifffty-with-r\/","url_meta":{"origin":13938,"position":0},"title":"DO Something Nifffty with R","author":"hrbrmstr","date":"2015-06-19","format":false,"excerpt":"@briandconnelly (of [pushoverr](http:\/\/crantastic.org\/authors\/4002) fame) made a super-cool post about [connecting R](http:\/\/bconnelly.net\/2015\/06\/connecting-r-to-everything-with-ifttt\/) to @IFTTT via IFTTT's \"Maker\" channel. The IFTTT Maker interface to receive events is fairly straightforward and Brian's code worked flawlessly, so it was easy to tweak a bit and [wrap into a package](https:\/\/github.com\/hrbrmstr\/nifffty). To get started, you can\u2026","rel":"","context":"In &quot;Apple Watch&quot;","block_context":{"text":"Apple Watch","link":"https:\/\/rud.is\/b\/category\/apple-watch\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":5146,"url":"https:\/\/rud.is\/b\/2017\/03\/12\/think-twice-before-using-ohmconnect\/","url_meta":{"origin":13938,"position":1},"title":"Think Twice Before Using Ohmconnect","author":"hrbrmstr","date":"2017-03-12","format":false,"excerpt":"I listen to @NPR throughout the day (on most days) and a story on Ohmconnect piqued my interest (it aired 5 days prior to this post). The TLDR on Ohmconnect is that it ostensibly helps you save energy by making you more aware of consumption and can be enabled to\u2026","rel":"","context":"In &quot;Cybersecurity&quot;","block_context":{"text":"Cybersecurity","link":"https:\/\/rud.is\/b\/category\/cybersecurity\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/03\/OhmConnect-9.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/03\/OhmConnect-9.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/03\/OhmConnect-9.png?resize=525%2C300 1.5x"},"classes":[]},{"id":1722,"url":"https:\/\/rud.is\/b\/2012\/10\/22\/get-an-r-data-frame-from-a-mongodb-query\/","url_meta":{"origin":13938,"position":2},"title":"Get an R Data Frame from a MongoDB Query","author":"hrbrmstr","date":"2012-10-22","format":false,"excerpt":"There's a good FAQ on how to do the MongoDB query -> R data frame but I wanted to post a more complete example that included the database connection and query setup since I suspect there are folks new to Mongo who would appreciate the end-to-end view. The code is\u2026","rel":"","context":"In &quot;Development&quot;","block_context":{"text":"Development","link":"https:\/\/rud.is\/b\/category\/development\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3043,"url":"https:\/\/rud.is\/b\/2014\/09\/23\/seeing-the-daylight-with-r\/","url_meta":{"origin":13938,"position":3},"title":"Seeing the (day)light with R","author":"hrbrmstr","date":"2014-09-23","format":false,"excerpt":"The arrival of the autumnal equinox foreshadows the reality of longer nights and shorter days here in the northeast US. We can both see that reality and distract ourselves from it at the same time by firing up RStudio (or your favorite editor) and taking a look at the sunrise\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":13894,"url":"https:\/\/rud.is\/b\/2023\/03\/29\/using-webr-pyodide-to-fill-in-the-temporary-package-gaps\/","url_meta":{"origin":13938,"position":4},"title":"Using WebR + Pyodide To Fill In The (Temporary) Package Gaps","author":"hrbrmstr","date":"2023-03-29","format":false,"excerpt":"I won't wax long and poetic here since I've already posted the experiment that has all the details. TL;DR: there are still only ~90-ish ? in the WebR WASM \"CRAN\", but more are absolutely on the way, including the capability to build your own CRAN and dev packages via Docker\u2026","rel":"","context":"In &quot;Python&quot;","block_context":{"text":"Python","link":"https:\/\/rud.is\/b\/category\/python-2\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":13927,"url":"https:\/\/rud.is\/b\/2023\/04\/10\/introducing-webrider-the-webr-ide-ish-repl-you-didnt-know-you-needed\/","url_meta":{"origin":13938,"position":5},"title":"Introducing WebRIDEr: The WebR &#8220;IDE&#8221;-ish REPL You Didn&#8217;t Know You Needed","author":"hrbrmstr","date":"2023-04-10","format":false,"excerpt":"The official example WebR REPL is definitely cool and useful to get the feel for WebR. But, it is far from an ideal way to deal with it interactively, even as just a REPL. As y'all know, I've been conducing numerous experiments with WebR and various web technologies. I started\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"ide-like view","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/preview.png?fit=1200%2C754&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/preview.png?fit=1200%2C754&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/preview.png?fit=1200%2C754&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/preview.png?fit=1200%2C754&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/04\/preview.png?fit=1200%2C754&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/13938","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=13938"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/13938\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media\/13939"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=13938"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=13938"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=13938"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}