December 9, 2023

I was at work earlier this week preparing a blog post that shows how many integrations we have in our platform. I won’t talk about that stuff here, but I really wanted to show all the integration as I was working on it.

One table was looking very boring.

Multiple categorized unordered lists seemed too cumbersome.

Then, it dawned on me that I could make a visual representation of all integration partners by thinking of the entire integration ecosystem as a “universe”, with each category being a “solar system” of that universe.

I’ve been relying more on Javascript for dataviews these days, but I’ll always be more comfortable in {ggplot2}, so I turned to R to design a way:

Generate concentric orbits for “n” solar systems Randomize the placement of planets in each ring Make a nice plot!

I worked with one of the most amazing designers on the planet (heh) to come up with some stellar (heh) styling for it, and this was the result:

I took the styling guidance and wrapped the dirty, separate functions into a new {ggsolar} package, you can find them at https://github.com/hrbrmstr/ggsolar.

It’s very crude, and I need to “geomify” it at some point, but that’s it.

A function to generate concentric circle polygons, a simple plotting function to identify a random point on each ring, and a theme cleanup function for decent output.

The default is to generate evenly distributed concentric circles, but you have the option of supplying a custom radii vector to make it more “real” / “solar-system-y”.

Here’s the general flow:

# sol_planets is generated into a vector of the names of our system’s planets sol_orbits

See also  Learning Excel As An R User | R bloggers

random system

I’ve included a Generate_random_planets() function that uses a hidden Markov model to generate believable planet names, so now you can create your own universe with {ggplot2}!

set.seed(42) (rando_planets random system

Wing

Kick the tires, use {gganimate} to create some animations, and be the ruler of your own universe! (We’re going to try to generate a team “organization chart” with these later in the week, so get creative too!).

Connected

Source link