Click the Original, Code and Reconstruction tabs to read about the issues and how they were fixed.
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:
The visualisation chosen had the following three main issues:
Reference
u/ffffffffffffffffffun. (2022). Most Valuable Brands in 2022, Retrieved November 17, 2022, from Reddit Website, https://wwww.reddit.com/r/visualization/comments/yfrlsf/most_valuable_brands_in_2022
Ang. (2022). The Top 100 Most Valuable Brands in 2022, Retrieved November 17, 2022, from Visual Capitalist Website: https://www.visualcapitalist.com/top-100-most-valuable-brands-in-2022/
Haigh. (2022). Global 500 2022, Retreived November 18, 2022, from Brand Directory Website: https://branddirectory.com/download-report/brand-finance-global-500-2022-preview.pdf
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
Bookdown (c.2021). Basic R Colors. Retrieved November 18, 2022, from Bookdown website: https://bookdown.org/hneth/ds4psy/D-3-apx-colors-basics.html
Holtz (2018). Horizontal barplots with R and ggplot2, Retrieved November 19, 2022, from R-Graph-Gallery Website: https://r-graph-gallery.com/web-horizontal-barplot-with-labels-the-economist.html
Lustik (2018). How to increase size of ggplot - squeezed horizontal bar chart. Retrieved November 19, 2022, from Stackoverflow website: https://stackoverflow.com/questions/48214915/how-to-increase-size-of-ggplot-squeezed-horizontal-bar-chart
Arun (2013). How to change legend plot in ggplot. Retreived November 20, 2022, from Stackoverflow website: https://stackoverflow.com/questions/14622421/how-to-change-legend-plot-in-ggplot
kassambara (2019). Make legend title bold without making other legend components bold #419. Retrieved November 20, 2022, from github wesite: https://github.com/kassambara/survminer/issues/419
ACMA Research and Analysis Section. (2015). Australians get mobile. Retrieved August 13, 2019, from Australian Communications and Media Authority website: https://www.acma.gov.au/theACMA/engage-blogs/engage-blogs/Research-snapshots/Australians-get-mobile
The following plot fixes the main issues in the original.
plot1