Click the Original, Code and Reconstruction tabs to read about the issues and how they were fixed.

Original


Source: Visualcapitalist - The Top 100 Most Valuable Brands in 2022 (2022).


Objective

The objective of the original visualisation is to highlight the top 100 most valuable brands in the world in 2022. The value of the brands can be thought of as a marketing-related intagible asset that creates a brand identity and reputation in the minds of consumers. The visualisation attempts to measure this in financial terms, calculating what the brand is worth to the company that owns it.

The methodology for calcualting brand value is by the following formula:

Brand Strength Index (BSI) x Brand Royalty Rate x Brand Revenues = Brand Value

Brand Strength Index looks at brand investment, brand equity, and brand performance. The brand royalty rate is determined based on sector. Forcast brand specific revenues are determined based on the proportion of parent company revenues attributable to the brand in question. Brand value itself is discounted to net present value. (Ang. 2022)

The target audience are marketing and financial teams within these companies. Valuing brands bridges the gpa between these 2 departments withing an organisation. This provides marketers with the ability to communicate the significance of what they do, and financiers can use the information to chart a course that maximises profits. WIthout knowing the precise, financial value of an asset, how can you know if you are maximising your returns? (Haigh. 2022)

Additional target audiences are:

  • Economists
  • Investors

The visualisation chosen had the following three main issues:

  • Visual Bombardment - There are far too many blobs / circles for the viewer to quickly accertain what is actually happening in this visual. the plot is largely incomprehendible.
  • Area and Size as Quantity - Even though the brand value is reported in each circular area, is is vusually difficult to determine differences in the smaller scaled brands. At a glance it appears all the smaller brand areas are fixed even though they have a rating and value. They appear the same and this is not advisable.
  • Colour - Using the Coblis Colour Blindness Simulator, we can see that there people who are affected with Dichromatic and Monochromatic colour blindness will have issues distinguishing between the different colour catagories.

Reference

Code

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

## install packages and load libraries

# install.packages("patchwork")

library(readr) # Useful for importing data
library(rvest) # Useful for scraping HTML data
library(knitr) # Useful for creating nice tables
library(tidyr) # Useful for creating tidy data
library(dplyr) # Useful for data manipulation
library(stringr) # Useful for working with strings
library(ggplot2) # uselful for high quality plots
library(tidyverse)
library(scales)
library(patchwork)
# scrap the data from the source file listed on the visualisation

web_scrape <- "https://www.visualcapitalist.com/top-100-most-valuable-brands-in-2022/"
web_scrape1 <- read_html(web_scrape)
table <- html_table(html_nodes(web_scrape1, "table"), fill = TRUE)
results <- table[[1]]

# change the varialbe name
names(results)[3] <- "Value"

# change the variable data type
results$Value = as.numeric(gsub("\\$", "", results$Value))

# check characteristics
str(results)
## tibble [100 × 5] (S3: tbl_df/tbl/data.frame)
##  $ Rank   : int [1:100] 1 2 3 4 5 6 7 8 9 10 ...
##  $ Brand  : chr [1:100] "Apple" "Amazon" "Google" "Microsoft" ...
##  $ Value  : num [1:100] 355 350 263 184 112 ...
##  $ Country: chr [1:100] "United States" "United States" "United States" "United States" ...
##  $ Sector : chr [1:100] "Tech & Services" "Retail & Consumer Goods" "Media & Telecoms" "Tech & Services" ...
# check Sector unique observations
unique(results$Sector)
## [1] "Tech & Services"         "Retail & Consumer Goods"
## [3] "Media & Telecoms"        "Banking & Insurance"    
## [5] "Automobiles"             "Energy & Utilities"     
## [7] "Food & Bev"              "Healthcare"
# To match the original visualisation, adjust the legend key to show market segment percentages
results$Sector[results$Sector == "Tech & Services"] <- "Tech & Services (22.8%)"
results$Sector[results$Sector == "Retail & Consumer Goods"] <- "Retail & Consumer Goods (19.5%)"
results$Sector[results$Sector == "Media & Telecoms"] <- "Media & Telecoms (21.7%)"
results$Sector[results$Sector == "Banking & Insurance"] <- "Banking & Insurance (13.3%)"
results$Sector[results$Sector == "Automobiles"] <- "Automobiles (8.4%)"
results$Sector[results$Sector == "Energy & Utilities"] <- "Energy & Utilities (8.6%)"
results$Sector[results$Sector == "Food & Bev"] <- "Food & Bev (4.9%)"
results$Sector[results$Sector == "Healthcare"] <- "Healthcare (0.7%)"
# using ggplot for bar plot ( flipped horizontaly)
plot1 <- ggplot(results, aes(x = reorder(Brand, Value), y = Value, fill = Sector, width = 0.6)) +
  geom_bar(stat = "identity", color="#4d4a4a") +
  coord_flip()

# add b (Billions) to the x axis and adjust axis text and titles
plot1 <- plot1 + scale_y_continuous(labels = label_number(suffix ="B"), breaks = seq(0, 400, by = 50)) +
                             theme(axis.title.x = element_text(size = 11, color = "#4d4a4a"),
                 axis.text.x = element_text(size = 11, face = "bold"),
                 axis.text.y = element_text(size = 11, face = "bold"),
                 axis.title.y = element_blank())

# adjust colour of key as per colour-lind friendly palette (Bookdown. c2021)
plot1 <- plot1 +  scale_fill_manual(values = c("#999999","#E69F00","#56B4E9","#009E73","#F0E442","#0072B2", "#D55E00", "#CC79A7"))

# add labels to each bar
plot1 <- plot1 + geom_text(aes(label = paste(Value, "B"), hjust = -0.05)) 

# add title, subtitle and caption text to plot
plot1 <- plot1 + labs(y = "Total value of Brand - USD",
                title = "Most Valuable Brands 2022",
                subtitle = "Top 100",
                caption = "Data source: Brand Finance - Global 500, 2022. The annual report on the world's most valuable and strongest brands") +
  theme(plot.title=element_text(size = 22 , hjust = 0.5, color = "#4d4a4a", face = "bold"),
        plot.subtitle=element_text(size = 16, hjust = 0.5, color = "#4d4a4a"),
                 plot.caption=element_text(size = 8, color = "#4d4a4a"),)

# adjust additional themes for readability
plot1 <- plot1 + theme(strip.text.y = element_text(size = 11, face="bold"),
                 legend.position = "top",
                 panel.background = element_rect(fill = "white"),
                 panel.grid.major.x = element_line(color = "#A8BAC4", size = 0.3),
                 axis.line.y.left = element_line(color = "grey"),
                 legend.title = element_text(face = "bold"))

# add to key title for explanation of bracketed percentage figures
plot1 <- plot1 + guides(fill = guide_legend(title = "Sector (Market Share %)"))

Data Reference

Reconstruction

The following plot fixes the main issues in the original.

plot1