MakeoverMonday: Pesticide usage in US

It’s been a while since I’ve posted! For a while I’ve been interested in joining the MakeoverMonday community, a group of data visualizers who come together each week to critique and redesign a visualization provided by Eva Murray and Andy Kriebel. I haven’t, due to busyness mostly, but this semester I finally took the dive and signed up! Call it a 2020 resolution. I hope that this will become a regular opportunity for me to keep developing my visualization critique and design skills.

I enjoyed my first challenge, MakeoverMonday 2020 Week 2, a simple visualization that nonetheless provides a lot to think about and was a challenging redesign.

Here’s the original visualization, Figure 1 from the Environmental Health article The USA lags behind other agricultural nations in banning harmful pesticides:

The data provided at data.world for the redesign don’t actually contain the same information on counts that we see in the original viz, but rather data on total weight of pesticides that are banned/phased out in other countries that were applied used in the U.S. in 2016.

My critiques of the original figure:

  • The way the “whole” is divvied up (whether that “whole” is number of pesticides or total lbs applied) between EU, Brazil, and China is very unclear. The figure tries to get at intersections by including $\geq 1$, $\geq 2$ and All 3, but it’s impossible to know which pesticides are banned by (for example) both China and Brazil. It takes a while to understand what the “whole” is.
  • The categories along the horizontal are a mix of both country labels and number of countries. I don’t like this mixing of label types.
  • Only counts of pesticides are shown: no information about amount of pesticides applied is available in the visualization shown. For example, China has banned only 11 pesticides, but does it ban the “big ones” as applied in the U.S.? We can’t tell from the figure.

In my redesign, I had a couple goals to address these critiques:

  1. Make clear what the “whole” is.
  2. Allow the viewer to see where the intersections in banned pesticides exist. E.g., if a pesticide is banned in the EU, is it also banned in China, or in Brazil? All 3?
  3. Visualization amount applied rather than counts.

To accomplish this I had to dig a bit deeper than the data provided on Data World, and found what I was looking for with Additional File 5, Tables S131-S133 from the article. I also had to do a bit of cleaning. Here’s a link to the data I ultimately ended up connecting to in Tableau

Finally, my redesign (Tableau Public version):

Some design comments:

  • This accomplishes (I think) a clear visual of “the whole”: the giant (perhaps too giant) grey box with “328 million pounds” are the first things you see
  • If desired, you can see which pesticides are banned in the EU, China, and/or Brazil. This information was obscured before.
  • You can now see that although China has banned fewer pesticides, they are pesticides that are more widely used (at least in the U.S.).
  • A critique of my own redesign: are the percents meaningful? “98%” is a weird percent: the percent of US-applied pesticides that are banned in the EU. If they were banned in the US, would they be replaced by something else?

Some technical comments:

  • The grey box is giant, perhaps too much so, but getting Tableau to label the cells of the treemap in a satisfactory way was a pain. Some of the labels (e.g. Fomesan) I added manually.
  • Getting the four treemaps to divide the pesticides up in the same way, while applying different color schemes, was a pain and I used a hack approach (download the Tableau workbook if you are curious).

R code for creating the .csv I used in my redesign, which begins with a stacked version of Tables S131-S133 from Additional file 5

pest <- read.csv('pesticide_complete_stack.csv')

library(tidyr) 
library(dplyr)
lbs <- pest %>% group_by(Pesticide) %>% summarize(USLbs2016 = mean(USLbs2016))
use <- function(col) ifelse(is.na(col),0,1)

out <- pest %>% spread(key = CountryBanned, value = USLbs2016) %>%
  inner_join(lbs, by = 'Pesticide') %>%
  mutate_at(vars(EU:Brazil), use) %>%
  mutate(nbanned = Brazil + China + EU) %>%
  mutate(used_US = ifelse(USLbs2016> 0, 1, 0)) %>% 
  select(Pesticide, USLbs2016, EU,China,Brazil,nbanned,used_US)

write.csv(out, file = 'pesticide_clean.csv',row.names=FALSE)

Related