Assessment declaration checklist

Please carefully read the statements below and check each box if you agree with the declaration. If you do not check all boxes, your assignment will not be marked. If you make a false declaration on any of these points, you may be investigated for academic misconduct. Students found to have breached academic integrity may receive official warnings and/or serious academic penalties. Please read more about academic integrity here. If you are unsure about any of these points or feel your assessment might breach academic integrity, please contact your course coordinator for support. It is important that you DO NOT submit any assessment until you can complete the declaration truthfully.

By checking the boxes below, I declare the following:

I understand that:

I agree and acknowledge that:

This is a template file. The following example included is not considered a good example to follow for Assignment 2. Remove this warning prior to submitting.

Deconstruct

Original

The original data visualisation selected for the assignment was as follows:


Source: Visual Capitalist (2024).


Objective and Audience

The objective and audience of the original data visualisation chosen can be summarised as follows:

Objective:
The objective of this visualisation is to show and compare which company’s employees have donated the most during this current election cycle. Furthermore, for each company show what proportion of the money donated went to each of the two major parties (Republican and Democratic Party). The designer wants to explore and show the influence people from various companies may have on the US election cycle and explore their political preferences and orientations.

Audience
The main audience of this visualisation would be Canadian and American business and finance workers following the 2024 US election cycle.

Critique

The visualisation chosen had the following three main issues:

  • Misleading data:

    The visualisation doesn’t match with the data credited (Quiver Quantitative). It appears that they’ve included PAC donations with employee donations in the total amounts donated for each company. This is misleading because it increases each company’s total donation amount, it changes the Democrat and Republican ratios and it changes the order of the companies in the ranking. This may exaggerate the true impact of each company and change the viewers opinion of them.

  • Unable to compare companies:

    It’s diffcult to compare the magnitude of donations between companies as they are only ordered based on their total donation and labled. By organising the data like this it is no better than a table of numbers, as there isn’t a strong and easy way to visually compare the magnitude of each company’s donations.

  • Form over function:

    The original design overemphasises the company’s branding and the aesthetics of the visualisation to the detriment of the data. The branding is so large it distracts from the the total donation amount, and the ballot boxes are so larg they distance data further making it difficult to compare eachother.

Reconstruct

Code

The following code was used to fix the issues identified in the original.

library(ggplot2)
library(ggpp)
donations <- data.frame(
                      Company = c("News Corp","News Corp","Alphabet","Alphabet","Blackstone","Blackstone","Netflix","Netflix","Microsoft","Microsoft","Arista Networks","Arista Networks","Palantir Technologies","Palantir Technologies","Charles Schwab","Charles Schwab","Twilio","Twilio","Intercontinental Exchange","Intercontinental Exchange"),
                      
                      Contribution = c(8.285858,0.097677, 6.639442, 0.633748,1.04664, 6.041341, 4.464488, 0.002686, 3.445873, 0.87632, 3.560568, 0.03045, 1.052258,2.264868, 0.115894, 2.983638, 2.115989, 0.001967, 0.012169, 1.888948),
                      
                      Party = c("D","R","D","R","D","R","D","R","D","R","D","R","D","R","D","R","D","R","D","R"),

                      PercentageDem = c("99%","","91%","","15%","",">99%","","80%","","99%","","32%","","","",">99%","","",""),
                      PercentageDemExcep = c("","","","","","","","","","","","","","","4%","","","","1%",""),

                      PercentageRep = c("","","","9%","","85%","","","","20%","","","","68%","","96%","","","","99%"),
                      PercentageRepExcep = c("","1%","","","","","","<1%","","","","1%","","","","","","<1%","",""))
  # Data: Quiver Quantitative (2024)


donations$Company <- factor(donations$Company, levels = c("News Corp","Alphabet","Blackstone","Netflix","Microsoft","Arista Networks","Palantir Technologies","Charles Schwab","Twilio","Intercontinental Exchange"))
  # Ben (2013)

levels(donations$Company) <- gsub(" ", "\n", levels(donations$Company))
  # Mollie (2013)

p1 <- ggplot(data = donations, aes(group = 1, x = Company,y = Contribution, fill = Party))

p1 <- p1 + geom_bar(position = "stack", stat = "identity") +
  
  scale_fill_manual(values = c("#2028ad", "#d31f1d"), name = "Party Share", breaks = c("D", "R"), labels = c("Democrat", "Republican")) +
  # Image Color Picker (2024)
  # Cookbook for R (N/D)
  # Alboukadel Kassambara (N/D)
  
  geom_text(aes(label = paste(PercentageDem)), position = position_stack(vjust = 0.6), colour = "white", size = 5, fontface = "bold") +
  
  geom_text(aes(label = paste(PercentageDemExcep)), nudge_y = 4*10^-1, colour = "#2028ad", size = 5, fontface = "bold") +
  # Image Color Picker (2024)
 
  geom_text(aes(label = paste(PercentageRep)), position = position_stack(vjust = 0.6), colour = "white", size = 5, fontface = "bold") +
  # Hadley Wickham, et al. (N/D)
  
  geom_text(aes(label = paste(PercentageRepExcep)), position = position_stacknudge(vjust = 1, y = 4*10^-1), colour = "#d31f1d", size = 5, fontface = "bold") +
  # Michael Krassowski (2024)
  # Image Color Picker (2024)
  
  labs(
          title = "Employee Contributions", 
          subtitle = "Company Employee Donations in 2024", 
          y = "Total\nDonations\n(USD)") + 

  theme_minimal(base_size = 12) + 
  # Hadley Wickham, et al. (N/D)
  
  theme(
      axis.text.x = element_text(angle = 30, hjust = 0.8, vjust = 1.2, size = 14),
        axis.text.y = element_text(size = 13),
        axis.title.x = element_text(size = 15),
        axis.title.y = element_text(size = 14, angle = 0, vjust  = 0.5),
        panel.grid = element_blank(), 
        plot.title = element_text(size = 22, hjust = 0.5, face = "bold"), 
        plot.subtitle = element_text(size = 12, hjust = 0.5),
        legend.title = element_text(size = 13),
        panel.background = element_rect(fill = "#cdcccc", colour = "#cdcccc"),
        plot.background = element_rect(fill = "#cdcccc", colour = "#cdcccc")) +
        # Andrew Heiss (2022)
        # Hadley Wickham, et al. (N/D)
        # Jack Edmonds (2011)
        # Image Color Picker (2024)
  
    scale_y_continuous(limits = c(0,10^1),
    labels = scales::label_dollar(accuracy = 1, prefix = "$", suffix = "M"))
    # Hadley Wickham & Dana Seidel (N/D)

Reconstruction

The following plot fixes the main issues in the original.

References

The reference to the original data visualisation choose, the data source(s) used for the reconstruction and any other sources used for this assignment are as follows: