This guide to data visualization standards and practices is specifically meant for Amino’s data stories. While we do visualize a ton of information in our products and day-to-day work, data storytelling has unique constraints. Having said that, if you want to make your analytics dashboard or presentation look nicer, you’re more than welcome to borrow these concepts. Just keep in mind they don’t always translate well to different media!
Color palettes for data visualization need to be bold, distinct, perceptually accurate, and distinguishable to people with common forms of color blindness. Thankfully, our Amino brand colors check most of these boxes.
A few notes on factors: Two factors are commonly used to distinguish patient gender in our data stories. For the sake of consistency, blue designates male and orange designates female. Adding more than five factor colors to a chart is strongly discouraged.
Context is key for selecting the appropriate color ramp. Generally speaking, we start with purple. The diverging scale is used to make a distinction between low and high values, where blue is typically low and orange is typically high. In some cases, coloring via quantiles creates an easier to understand continuous scale.
To get started, you will need:
ggplot2theme. Amino’s theme can be found in this private repo.. Check out this guide to learn how to make your own custom themes.
Generate the chart area in R via
ggplot2, export as a PNG via
ggsave, and drop the resulting file into Sketch. Several Sketch templates are provided in the private repo above.
This process may seem disjointed, but it allows us to create charts in a consistent and easily reproducible manner—playing to the strengths of each platform. If an analysis needs to be updated or tweaked, the chart can easily be refreshed by simply re-running the code in
R. Meanwhile, titles, labels, legends, footers, and other stylistic elements can be handled in Sketch.
Dimensions: Default chart dimensions are 1080 by 1080 pixels. These dimensions were chosen as a sort of compromise between the wildly inconsistent image sizes used across social media platforms. Depending on the content being presented, height can be altered to suit, but width must be fixed.
Header: With few exceptions, title and subtitle must not exceed 3 lines. Either the title is one line and the subtitle is two lines, or vice versa. This is to keep the language neat and concise. Title is black and 40pt, subtitle is 54% transparent black and 37pt.
Legends and callouts: Text is black 25pt, which is the minimum readable size on mobile.
Chart area: The chart background color is
#EEEEEE to provide contrast against white backgrounds used on Amino’s blog, social media, and most other sites.
Footer: The footer contains data source information, tagline, logo, and copyright. Text is 54% transparent black and 16pt. Data source information plus tagline must not exceed 2 lines. These can be combined as a single paragraph to accommodate. Footer background is
To create clear, understandable, and visually accessible charts, its best to think in layers. In order from bottom to top:
Below is an evolving list of examples with commentary and links to their respective blog posts.
Which axis you put your categorical variables on is an aesthetic choice. In this case, a long list of states is easier to read vertically vs. horizontally. The categorical axis grid is offset to create a table-like effect.
Line charts are most commonly used to display time-series data. Generally speaking, lines should be used for rate functions, and bars should be used for discrete values.
The top chart shows deaths per 100,000 residents as a line (rate function) while the bottom chart shows patients as bars (discrete values). This is also an example of a combination chart: one title and two subtitles, tied together with narrative callouts.
However, line and bar charts aren’t the only way to show how data changes over time. In the example below, a heat map was employed to show when women received a specific type of ultrasound over the course of 308,000 pregnancies. Bands in gray represent weeks where only 100-200 patients were observed as receiving an ultrasound, while the darkest purple bands represent 10,000+ patient observations.
The hexagonal tile map is used when trying to compare states by a scalar variable (like cost, population, or age) and the precise geographical location of each state is not important.
Regular maps are used to display county-level data or similar levels of detail.
A chord diagram is a useful way to visualize relationships in a matrix of data. In this example, the referring doctor is connected to the rendering doctor by a line representing the volume of referrals made that year—the thicker the line, the more referrals. This particular visualization was generated in Gephi and imported into Sketch as an SVG.