Do tall people think reclining your seat is rude?

This visualization explores if people find an action more or less rude when it directly affects them. For example, very tall people may be made extremely uncomfortable when someone reclines their seat. There looks to be a small (and likely insignificant) effect, where respondents who said that the behavior was very rude were slightly taller than those who said it was somewhat rude or not rude at all. Some of the extreme categories have small sample sizes so be cautious drawing any conclusions.

Draft 1

In this first draft, I am overlaying points onto boxplots with geom_jitter() so that you can see the points that would otherwise be stacked on top of each other. I think the points are distracting here because there are two many points to easily be able to tell distribution patterns. In the next draft I will use a sina plot to plot the distribution of points.

Draft 2

In this draft, I am using a sina plot from the geom_force() package in order to see the distribution of the points. I got rid of the box plot because I felt like it distracting. I do want to be able to easily discern the mean easily from the graph, so I also added a point for each mean and a label. For my next draft, I wanted to be able to see all of the judgments (not just reclining behavior), so I used a bar chart and highlighted the judgments that I thought would be related to height.

Draft 3

figure_3b %>% 
  ggplot(aes(x = perc, y = fct_reorder(type, perc))) +
  geom_vline(xintercept = c(.25,.5, .75 ), color = "gray75")+
  geom_col(fill = "gray75", alpha = .8)+
  geom_col(aes(fill = type_cat), alpha = .8) +
  labs(x = "Percent judging the action as rude",
       y = NULL,
       title = "Do tall people think it's rude to recline your seat?",
        caption = "Data source: FiveThirtyEight")+
  theme_classic(base_size = 15)+
  scale_x_continuous(labels = scales::percent,
                     limits = c(0,1),
                     expand = c(0,0),
                     breaks = c(.25, .5, .75))+
  colorblindr::scale_fill_OkabeIto()+ 
  theme(legend.position = "none",
        plot.title.position = "plot",
        strip.text.x = element_text(face = "bold", size = 18),
        plot.title = element_text(face = "bold", size = 20),
        strip.background = element_rect(colour = "black", fill = "white", size = 1),
        panel.border = element_rect(linetype = "solid", size = 1, fill = NA),
        panel.background = element_rect(fill = "white"),
        axis.ticks = element_blank(),
        axis.text.y = element_text(face = c("bold", "plain", "bold", "plain", 'bold', 'plain', 'bold', 'plain', 'bold')))+
  facet_wrap(~height_cat)

In this draft, I added all of the judgments so that you can see if tall people differed on other judgments that might be relevant (e.g., tall people might need to wake their neighbor more often to walk around because they are more uncomfortable in their seats). I highlighted judgments that I thought were relevant so that the viewer focuses in on them. In my last plot, I animated it with gganimate so that you can see the same information without having to look at several different graphs.

Final draft

a <- figure_3b %>% mutate(type_cat = c("other", "other", "recline", "other", "other", "other", "move", "other", "walk")) %>% 
  ggplot(aes(x = perc, y = fct_reorder(type, perc))) +
  geom_col(aes(fill = type_cat))+
  labs(x = "Percent judging the action as rude",
       y = NULL,
       title = "Do tall people think it's rude to recline your seat?")+
  theme_minimal(base_size = 15)+
  scale_x_continuous(labels = scales::percent,
                     limits = c(0,1))+
  scale_fill_manual(values = c("#E69F00", "gray75", "#56B4E9", "#009E73"))+   
  theme(legend.position = "none",
        plot.title.position = "plot")+
  geom_text(x = figure_3b$perc, y = figure_3b$type, 
            label = paste0(round(figure_3b$perc*100), "%"),
            hjust = -.2)+
  gganimate::transition_states(height_cat, transition_length = 5,
                               state_length = 10) +
  labs(subtitle = 'Height: {closest_state} inches')