Show the code
pacman::p_load("tidyr", "dplyr", "readr", "ggplot2", "lubridate", "purrr", "scales", "magrittr", "ggpubr", "forcats", "see", "stringr")Broadcasted by the BBC, Doctor Who is a British Science-Fiction TV Series about a time travelling alien and their companion. To date, 319 stories have been broadcast: 155 from the Classic Era (1963-1989); 1 film (1996); and 163, since the Revival Era began in 2005.
This analysis looks at why the show performed best with 13 episodes per series, and whether the Episode type - as well as the variety of Writers and Directors - positively or negatively impacted the amount of UK Viewers and/or the Appreciation Index.
Limitations: This analysis does not consider the following: the companion characters; episode themes; budgets; non-UK audiences; or the consumption habits of UK viewers (e.g. if they watch live or via iPlayer).
pacman::p_load("tidyr", "dplyr", "readr", "ggplot2", "lubridate", "purrr", "scales", "magrittr", "ggpubr", "forcats", "see", "stringr")dw <- read.csv("Data/DoctorWhoRevival.csv") |>
select(The_Doctor,
No_InSeries,
Series,
UK_viewers_millions,
Appreciation_Index,
Original_release_date,
Directed_by,
Written_by,
Showrunner,
StoryType) |>
mutate(Original_release_date = as.Date(Original_release_date, format = "%d/%m/%Y")) |>
mutate(Air_day = format(Original_release_date, format = "%A")) |>
mutate(EpisodeType = case_when(No_InSeries == "Special" ~ "Special",
TRUE ~ "Series")) |>
mutate(Era = case_when(Original_release_date >= "2005-03-26" & Original_release_date <= "2010-01-01" ~ "Russell T Davies (1)",
Original_release_date >= "2010-04-03" & Original_release_date <= "2017-12-25" ~ "Steven Moffat",
Original_release_date >= "2018-10-07" & Original_release_date <= "2022-10-23" ~ "Chris Chibnall",
TRUE ~ "Russell T Davies (2)")) |>
mutate(The_Doctor_Tenure = case_when(
Original_release_date >= "2005-03-26" & Original_release_date <= "2005-06-18" ~ "Ninth Doctor",
Original_release_date >= "2005-12-25" & Original_release_date <= "2010-01-01" ~ "Tenth Doctor",
Original_release_date >= "2010-04-03" & Original_release_date <= "2013-12-25" ~ "Eleventh Doctor",
Original_release_date >= "2014-08-23" & Original_release_date <= "2017-12-25" ~ "Twelfth Doctor",
Original_release_date >= "2018-10-07" & Original_release_date <= "2022-10-23" ~ "Thirteenth Doctor",
Original_release_date >= "2023-11-25" & Original_release_date <= "2023-12-09" ~ "Fourteenth Doctor",
TRUE~ "Fifteenth Doctor",
)) |>
mutate(WriterCat = case_when(grepl("*,", Written_by) ~ "Co-Written",
TRUE ~ "Solo Written")) |>
mutate(
ShowrunnerProp = case_when(
grepl("Russell T Davies, *", Written_by) ~ "Russell T Davies Co-Written",
grepl("*, Steven Moffat", Written_by) ~ "Steven Moffat Co-Written",
grepl("*, Chris Chibnall", Written_by) ~ "Chris Chibnall Co-Written",
Written_by == "Russell T Davies" ~ "Russell T Davies",
Written_by == "Steven Moffat" ~ "Steven Moffat",
Written_by == "Chris Chibnall" ~ "Chris Chibnall",
TRUE ~ "Non-Showrunner"))
# Reorder Series Number
dw$No_InSeries <- factor(dw$No_InSeries, levels = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, "Special"))
# Reorder Eras
dw$Era <- factor(dw$Era, levels = c("Russell T Davies (1)", "Steven Moffat", "Chris Chibnall", "Russell T Davies (2)"))
# Reorder The Doctor
dw$The_Doctor_Tenure <- factor(dw$The_Doctor_Tenure, levels = c("Ninth Doctor", "Tenth Doctor", "Eleventh Doctor", "Twelfth Doctor", "Thirteenth Doctor", "Fourteenth Doctor", "Fifteenth Doctor"))
# Reorder Series
dw$Series <- factor(dw$Series,
levels = c("One", "Two", "Three", "Four", "2008-2010 Specials", "Five", "Six", "Seven", "2013 Specials", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "2022 Specials", "2023 Specials", "Fourteen", "Fifteen"))
# Reorder Story Types
dw$StoryType <- factor(dw$StoryType, levels = c("Standalone", "Two-Parter", "Three-Parter", "Six-Parter"))
# Reorder ShowrunnerProp
dw$ShowrunnerProp <- factor(dw$ShowrunnerProp, levels = c("Russell T Davies", "Russell T Davies Co-Written", "Steven Moffat", "Steven Moffat Co-Written", "Chris Chibnall","Chris Chibnall Co-Written", "Non-Showrunner"))Start_Date <- data.frame(dw |>
select(Era, The_Doctor_Tenure, Original_release_date) |>
group_by(Era, The_Doctor_Tenure) |>
slice(which.min(as.Date(Original_release_date))))
Start_Date <- Start_Date |>
rename_at("Original_release_date", ~"Start_Date")
End_Date <- data.frame(dw |>
select(Era, The_Doctor_Tenure, Original_release_date) |>
group_by(Era, The_Doctor_Tenure) |>
slice(which.max(as.Date(Original_release_date))))
End_Date <- End_Date |>
rename_at("Original_release_date", ~"End_Date")
SeriesOverview <- data.frame(dw |>
count(Era, The_Doctor_Tenure, name = "TenureLength") |>
group_by(Era))
(TenureDates <- cbind(SeriesOverview, Start_Date = Start_Date$Start_Date, End_Date = End_Date$End_Date)) Era The_Doctor_Tenure TenureLength Start_Date End_Date
1 Russell T Davies (1) Ninth Doctor 13 2005-03-26 2005-06-18
2 Russell T Davies (1) Tenth Doctor 47 2005-12-25 2010-01-01
3 Steven Moffat Eleventh Doctor 44 2010-04-03 2013-12-25
4 Steven Moffat Twelfth Doctor 40 2014-08-23 2017-12-25
5 Chris Chibnall Thirteenth Doctor 31 2018-10-07 2022-10-23
6 Russell T Davies (2) Fourteenth Doctor 3 2023-11-25 2023-12-09
7 Russell T Davies (2) Fifteenth Doctor 18 2023-12-25 2025-05-31
Start_Date <- data.frame(dw |>
select(Era, Series, EpisodeType, Original_release_date) |>
group_by(Era, Series, EpisodeType) |>
slice(which.min(as.Date(Original_release_date))))
Start_Date <- Start_Date |>
rename_at("Original_release_date", ~"Start_Date")
End_Date <- data.frame(dw |>
select(Era, Series, EpisodeType, Original_release_date) |>
group_by(Era, Series, EpisodeType) |>
slice(which.max(as.Date(Original_release_date))))
End_Date <- End_Date |>
rename_at("Original_release_date", ~"End_Date")
SeriesOverview <- data.frame(dw |>
count(Era, Series, EpisodeType, name = "SeriesLength") |>
group_by(Era))
(SeriesDates <- cbind(SeriesOverview, Start_Date = Start_Date$Start_Date, End_Date = End_Date$End_Date)) Era Series EpisodeType SeriesLength Start_Date
1 Russell T Davies (1) One Series 13 2005-03-26
2 Russell T Davies (1) Two Series 13 2006-04-15
3 Russell T Davies (1) Two Special 1 2005-12-25
4 Russell T Davies (1) Three Series 13 2007-03-31
5 Russell T Davies (1) Three Special 1 2006-12-25
6 Russell T Davies (1) Four Series 13 2008-04-05
7 Russell T Davies (1) Four Special 1 2007-12-25
8 Russell T Davies (1) 2008-2010 Specials Special 5 2008-12-25
9 Steven Moffat Five Series 13 2010-04-03
10 Steven Moffat Six Series 13 2011-04-23
11 Steven Moffat Six Special 1 2010-12-25
12 Steven Moffat Seven Series 13 2012-09-01
13 Steven Moffat Seven Special 2 2011-12-25
14 Steven Moffat 2013 Specials Special 2 2013-11-23
15 Steven Moffat Eight Series 12 2014-08-23
16 Steven Moffat Nine Series 12 2015-09-19
17 Steven Moffat Nine Special 2 2014-12-25
18 Steven Moffat Ten Series 12 2017-04-15
19 Steven Moffat Ten Special 2 2016-12-25
20 Chris Chibnall Eleven Series 10 2018-10-07
21 Chris Chibnall Twelve Series 10 2020-01-01
22 Chris Chibnall Twelve Special 1 2019-01-01
23 Chris Chibnall Thirteen Series 6 2021-10-31
24 Chris Chibnall Thirteen Special 1 2021-01-01
25 Chris Chibnall 2022 Specials Special 3 2022-01-01
26 Russell T Davies (2) 2023 Specials Special 3 2023-11-25
27 Russell T Davies (2) Fourteen Series 8 2024-05-11
28 Russell T Davies (2) Fourteen Special 1 2023-12-25
29 Russell T Davies (2) Fifteen Series 8 2025-04-12
30 Russell T Davies (2) Fifteen Special 1 2024-12-25
End_Date
1 2005-06-18
2 2006-07-08
3 2005-12-25
4 2007-06-30
5 2006-12-25
6 2008-07-05
7 2007-12-25
8 2010-01-01
9 2010-06-26
10 2011-10-01
11 2010-12-25
12 2013-05-18
13 2012-12-25
14 2013-12-25
15 2014-11-08
16 2015-12-05
17 2015-12-25
18 2017-07-01
19 2017-12-25
20 2018-12-09
21 2020-03-01
22 2019-01-01
23 2021-12-05
24 2021-01-01
25 2022-10-23
26 2023-12-09
27 2024-06-22
28 2023-12-25
29 2025-05-31
30 2024-12-25
dw <- data.frame(dw |>
mutate(SeriesCat = case_when(Original_release_date >= "2005-03-26" & Original_release_date <= "2005-06-18" ~ "13 Episodes",
Original_release_date >= "2006-04-15" & Original_release_date <= "2006-07-08" ~ "13 Episodes",
Original_release_date >= "2007-03-31" & Original_release_date <= "2007-06-30" ~ "13 Episodes",
Original_release_date >= "2008-04-05" & Original_release_date <= "2008-07-05" ~ "13 Episodes",
Original_release_date >= "2010-04-03" & Original_release_date <= "2010-06-26" ~ "13 Episodes",
Original_release_date >= "2011-04-23" & Original_release_date <= "2011-10-01" ~ "13 Episodes",
Original_release_date >= "2012-09-01" & Original_release_date <= "2012-09-29" ~ "13 Episodes",
Original_release_date >= "2013-03-30" & Original_release_date <= "2013-05-18" ~ "13 Episodes",
Original_release_date >= "2014-08-23" & Original_release_date <= "2014-11-08" ~ "12 Episodes",
Original_release_date >= "2015-09-19" & Original_release_date <= "2015-12-05" ~ "12 Episodes",
Original_release_date >= "2017-04-15 " & Original_release_date <= "2017-07-01" ~ "12 Episodes",
Original_release_date >= "2018-10-07" & Original_release_date <= "2018-12-09" ~ "10 Episodes",
Original_release_date >= "2020-01-01" & Original_release_date <= "2020-03-01" ~ "10 Episodes",
Original_release_date >= "2021-10-31" & Original_release_date <= "2021-12-05" ~ "6-8 Episodes",
Original_release_date >= "2024-05-11" & Original_release_date <= "2024-06-22" ~ "6-8 Episodes",
Original_release_date >= "2025-04-12" & Original_release_date <= "2025-05-31" ~ "6-8 Episodes",
Original_release_date >= "2008-12-25" & Original_release_date <= "2010-01-01" ~ "Specials",
Original_release_date >= "2013-11-23 " & Original_release_date <= "2013-12-25" ~ "Specials",
Original_release_date >= "2022-01-01" & Original_release_date <= "2022-10-23" ~ "Specials",
Original_release_date >= "2023-11-25" & Original_release_date <= "2023-12-09" ~ "Specials",
TRUE ~ "Series Specials")
))
dw$SeriesCat <- factor(dw$SeriesCat, levels = c("13 Episodes", "12 Episodes", "10 Episodes", "6-8 Episodes", "Specials", "Series Specials"))summary(dw) The_Doctor No_InSeries Series UK_viewers_millions
Length:196 Special:27 Seven : 15 Min. : 2.700
Class :character 1 :15 Two : 14 1st Qu.: 6.018
Mode :character 2 :15 Three : 14 Median : 7.135
3 :15 Four : 14 Mean : 7.064
4 :15 Six : 14 3rd Qu.: 8.020
5 :15 Nine : 14 Max. :13.310
(Other):94 (Other):111
Appreciation_Index Original_release_date Directed_by Written_by
Min. :75.00 Min. :2005-03-26 Length:196 Length:196
1st Qu.:82.00 1st Qu.:2008-05-27 Class :character Class :character
Median :84.00 Median :2013-04-23 Mode :character Mode :character
Mean :83.61 Mean :2013-12-10
3rd Qu.:86.00 3rd Qu.:2018-10-22
Max. :91.00 Max. :2025-05-31
NA's :8
Showrunner StoryType Air_day EpisodeType
Length:196 Standalone :135 Length:196 Length:196
Class :character Two-Parter : 52 Class :character Class :character
Mode :character Three-Parter: 3 Mode :character Mode :character
Six-Parter : 6
Era The_Doctor_Tenure WriterCat
Russell T Davies (1):60 Ninth Doctor :13 Length:196
Steven Moffat :84 Tenth Doctor :47 Class :character
Chris Chibnall :31 Eleventh Doctor :44 Mode :character
Russell T Davies (2):21 Twelfth Doctor :40
Thirteenth Doctor:31
Fourteenth Doctor: 3
Fifteenth Doctor :18
ShowrunnerProp SeriesCat
Russell T Davies :43 13 Episodes :91
Russell T Davies Co-Written: 3 12 Episodes :36
Steven Moffat :44 10 Episodes :20
Steven Moffat Co-Written : 6 6-8 Episodes :22
Chris Chibnall :23 Specials :13
Chris Chibnall Co-Written : 5 Series Specials:14
Non-Showrunner :72
dwSer <- dw |> filter(EpisodeType == "Series") |> filter(Series != "Fifteen")
dwSp <- dw |>
filter(EpisodeType == "Special") |>
mutate(No_InSeries = case_when(
Original_release_date == "2009-04-11" ~ "2",
Original_release_date == "2009-11-15" ~ "3",
Original_release_date == "2009-12-25" ~ "4",
Original_release_date == "2010-01-01" ~ "5",
Original_release_date == "2012-12-25" ~ "2",
Original_release_date == "2013-12-25" ~ "2",
Original_release_date == "2015-12-25" ~ "2",
Original_release_date == "2015-12-25" ~ "2",
Original_release_date == "2017-12-25" ~ "2",
Original_release_date == "2022-04-17" ~ "2",
Original_release_date == "2022-10-23" ~ "3",
Original_release_date == "2023-12-02" ~ "2",
Original_release_date == "2023-12-09" ~ "3",
TRUE ~ "1"))dwPalette <- colorRampPalette(c("#FFE4B5","#F06060", "#F28963", "#00B9AE"))dwThemeLeg <- function(){
theme(
legend.position = "bottom",
legend.background = element_rect(fill = "#003B6F"),
legend.text = element_text(colour = "#FFFFFF", size = 12),
legend.title = element_text(colour = "#FFFFFF", size = 12, hjust = .5),
legend.direction = "horizontal",
legend.box = "vertical",
guides(colour = guide_legend(nrow = 3, byrow = T)),
plot.subtitle = element_text(colour = "#FFFFFF", size = 14, hjust = 0.5, vjust = 0),
plot.title = element_text(size = 16, colour = "#FFFFFF", hjust = .5, vjust = 0.5),
plot.caption = element_text(colour = "#FFFFFF", size = 12, hjust = 0.5, vjust = .5),
axis.title.x = element_text(colour = "#FFFFFF"),
axis.title.y = element_text(colour = "#FFFFFF"),
axis.text = element_text(colour = "#FFFFFF", size = 12),
axis.text.x = element_text(hjust = 1),
axis.ticks = element_line(colour = "#708090"),
axis.line = element_line(colour = "#708090"),
panel.background = element_rect(fill = "#003B6F"),
panel.grid = element_line(colour = "#708090"),
plot.margin = margin(1,2,1,1),
strip.text = element_text(colour = "#FFFFFF", size = 10),
strip.background = element_rect(fill = "#003B6F", colour = "#EE8262", linewidth = 0.5, linetype = "solid"),
plot.background = element_rect(fill = "#003B6F"))
}dwNoFifteen <- dw |> filter(Series != "Fifteen")
Scatter <- function(xaes, yaes, hline = F) {
xaes <- enquo (xaes)
yaes <- enquo(yaes)
ggplot(dwNoFifteen, aes(!!xaes,!!yaes)) +
scale_size(range = c(.1, 10)) +
scale_colour_manual(values = dwPalette(19)) +
guides(colour = guide_legend(nrow = 4, byrow = T)) +
dwThemeLeg() +
labs(
x = "",
y = "",
caption = "Source: https://en.wikipedia.org/wiki/List_of_Doctor_Who_episodes_(2005–present)")
}
ScatterSer <- function(xaes, yaes, hline = F) {
xaes <- enquo (xaes)
yaes <- enquo(yaes)
ggplot(dwSer, aes(!!xaes,!!yaes)) +
scale_size(range = c(.1, 10)) +
scale_colour_manual(values = dwPalette(16)) +
guides(colour = guide_legend(nrow = 4, byrow = T)) +
dwThemeLeg() +
labs(
x = "",
y = "",
caption = "Source: https://en.wikipedia.org/wiki/List_of_Doctor_Who_episodes_(2005–present)")
}
ScatterSp <- function(xaes, yaes, hline = F) {
xaes <- enquo (xaes)
yaes <- enquo(yaes)
ggplot(dwSp, aes(!!xaes,!!yaes)) +
scale_size(range = c(.1, 10)) +
scale_colour_manual(values = dwPalette(15)) +
guides(colour = guide_legend(nrow = 4, byrow = T)) +
dwThemeLeg() +
theme(plot.margin = margin(6,0,0,0)) +
labs(
x = "",
y = "",
caption = "Source: https://en.wikipedia.org/wiki/List_of_Doctor_Who_episodes_(2005–present)")
}DensHist <- function(xaes) {
xaes <- enquo(xaes)
ggplot(dw, aes(!!xaes)) +
geom_histogram(aes(y = after_stat(density), fill = Series), linewidth = 1.5, alpha = 0.75, na.rm = T, binwidth = 1) +
stat_summary(
aes(xintercept = after_stat(x), y = 0),
fun = mean, geom = "vline", orientation = "y",
colour = "#FFFFFF", linetype = "dashed", linewidth = 1.5, alpha = 0.5, na.rm = T) +
stat_summary(
aes(xintercept = after_stat(x), y = 0),
fun = quantile, geom = "vline", orientation = "y",
colour = "#76EEC6", linetype = "dashed", linewidth = 1.5, alpha = 0.5, na.rm = T) +
scale_fill_manual(values = dwPalette(19)) +
dwThemeLeg() +
labs(x = "",
fill = "Series:",
caption = "Source: https://en.wikipedia.org/wiki/List_of_Doctor_Who_episodes_(2005–present)")
}WDSLST <- as.data.frame(dw |>
group_by(The_Doctor_Tenure, Series, SeriesCat) |>
summarise(
No_of_Directors = n_distinct(Directed_by),
No_of_Writers = n_distinct(Written_by),
WriterType = n_distinct(WriterCat),
No_of_Episodes = n_distinct(StoryType),
.groups = "keep"))
Column <- function(xaes, yaes) {
xaes <- enquo (xaes)
yaes <- enquo (yaes)
ggplot(WDSLST, aes(!!xaes, !!yaes, fill = The_Doctor_Tenure)) +
geom_col(alpha = 0.85, na.rm = T, position = position_stack(reverse = T)) +
scale_y_discrete(limits=rev) +
scale_fill_manual(values = dwPalette(7)) +
dwThemeLeg() +
labs(
x = "",
y = "",
fill = "The Doctor:",
caption = "Source: https://en.wikipedia.org/wiki/List_of_Doctor_Who_episodes_(2005–present)")
}AvgAITtlV <- as.data.frame(dw |>
group_by(SeriesCat, Era, Series, The_Doctor_Tenure) |>
summarise(
TotalViews = sum(UK_viewers_millions),
Med_Views = round(median(UK_viewers_millions), 2),
Med_AI = round(median(Appreciation_Index, na.rm = T), 0),
.groups = "keep"))
Bar <- function(xaes, yaes) {
xaes <- enquo (xaes)
yaes <- enquo (yaes)
ggplot(AvgAITtlV, aes(!!xaes, !!yaes, fill = The_Doctor_Tenure)) +
geom_col(alpha = 0.85, na.rm = T, position = position_stack(reverse = T)) +
scale_fill_manual(values = dwPalette(19)) +
scale_y_discrete(limits=rev) +
dwThemeLeg() +
labs(
x = "",
y = "",
fill = "The Doctor:",
caption = "Source: https://en.wikipedia.org/wiki/List_of_Doctor_Who_episodes_(2005–present)")
}(SeriesOverviewVis <- ggplot(SeriesOverview, aes(SeriesLength, Series, fill = EpisodeType)) +
geom_col(alpha = 0.85, na.rm = T, position = position_stack(reverse = T)) +
geom_text(aes(label = SeriesLength), colour = "#151F30", size = 4, position = position_stack(vjust = 0.5, reverse = T), fontface = "bold") +
facet_wrap(~Era, scales = "free_y") +
scale_fill_manual(values = c("#F28963", "#00B9AE")) +
dwThemeLeg() +
scale_y_discrete(limits=rev) +
labs(
title = "Doctor Who: The Revival Era ~ Count of Series and Special Episodes",
x = "",
y = "",
fill = "Episode Type:",
caption = "Source: https://en.wikipedia.org/wiki/List_of_Doctor_Who_episodes_(2005–present)"))(dwSerAIfacet <- DensHist(Appreciation_Index) +
geom_density(colour = "#FFFFFF", linewidth = 1.5, alpha = 0.5, na.rm = T) +
facet_wrap(~SeriesCat) +
labs(
title = "Doctor Who: The Revival Era ~ Distribution of Appreciation Index",
subtitle = "Note: Series Fifteen's episodes do not have any Appreciation Indexes"))(TtlV <- Bar(TotalViews, Series) +
geom_text(aes(label = TotalViews), colour = "#003B6F", size = 4, position = position_stack(vjust = 0.5, reverse = T), fontface = "bold", na.rm = T) +
facet_wrap(~SeriesCat, scales = "free") +
labs(title = "Doctor Who: The Revival Era ~ Total UK Viewers (millions)",
x = "",
y = ""))(dwSerViewsfacet <- DensHist(UK_viewers_millions) +
geom_density(colour = "#FFFFFF", linewidth = 1.5, alpha = 0.75, na.rm = T) +
facet_wrap(~SeriesCat) +
labs(title = "Doctor Who: The Revival Era ~ Distribution of UK Viewers (millions)"))(AIViewsNo <- Scatter(UK_viewers_millions, Appreciation_Index) +
geom_point(aes(colour = Series), size = 5, shape = 15, alpha = 0.5) +
geom_smooth(colour = "#FFFFFF", method = "lm", formula = y ~ x) +
stat_cor(method = "spearman", label.y.npc = "top", aes(label = after_stat(r.label)), colour = "#FFFFFF") +
facet_wrap(~SeriesCat) +
labs(title = "Doctor Who: The Revival Era ~ Ratings vs Views",
subtitle = "Note: Series Fifteen's episodes do not have any Appreciation Indexes",
x = "UK Viewers (millions)",
y = "Appreciation Index",
colour = "Series:"))Observations:
(EpType <- Scatter(UK_viewers_millions, StoryType) +
geom_jitter(aes(colour = Series), size = 5, alpha = 0.35, shape = 15, na.rm = T) +
geom_point(aes(colour = Series), shape = 15) +
stat_boxplot(geom = "errorbar", colour = "#FFFFFF", linewidth = 2, alpha = 0.35, na.rm = T) +
geom_violin(quantiles = c(0.25,0.5,0.75), quantile.linetype = 1, quantile.linewidth = 1.5, colour = "#FFFFFF", alpha = 0.25, linewidth = 1, na.rm = T) +
facet_wrap(~SeriesCat, scales = "free") +
scale_y_discrete(limits=rev) +
labs(title = "Doctor Who: The Revival Era ~ Spread of Views by Story Type",
subtitle = "Note: Series Fifteen's episodes do not have any Appreciation Indexes",
colour = "Series:",
x = "UK Viewers (millions)")
)(SerEpStryTyp <- ggplot(dwSer, aes(No_InSeries, Series)) +
geom_point(aes(colour = StoryType), size = 6, shape = 15) +
facet_wrap(~SeriesCat, scales = "free") +
scale_colour_manual(values = dwPalette(4)) +
scale_y_discrete(limits=rev) +
dwThemeLeg() +
labs(
title = "Doctor Who: The Revival Era ~ Story Type for Series Episodes",
colour = "Story Type:",
x = "",
y = "",
caption = "Source: https://en.wikipedia.org/wiki/List_of_Doctor_Who_episodes_(2005–present)"))(SpEpStryTyp <- ggplot(dwSp, aes(No_InSeries, Series)) +
geom_point(aes(colour = StoryType), size = 6, shape = 15) +
facet_wrap(~SeriesCat, scales = "free") +
scale_colour_manual(values = dwPalette(2)) +
scale_y_discrete(limits=rev) +
dwThemeLeg() +
labs(
title = "Doctor Who: The Revival Era ~ Story Types for Special Episodes",
colour = "Story Type:",
x = "",
y = "",
caption = "Source: https://en.wikipedia.org/wiki/List_of_Doctor_Who_episodes_(2005–present)"))(AIViewsEpSer <- ScatterSer(No_InSeries, UK_viewers_millions) +
geom_point(aes(colour = as.factor(Appreciation_Index)), size = 6, shape = 15,) +
geom_segment(aes(x = No_InSeries, xend = No_InSeries, y = 0, yend = UK_viewers_millions, colour = as.factor(Appreciation_Index))) +
guides(colour = guide_legend(nrow = 2, byrow = T)) +
facet_wrap(~Series, scales = "free_x") +
labs(title = "UK Viewers and Appreciation Index for each Episode in a Series",
subtitle = "Note: Series Fifteen's episodes do not have any Appreciation Indexes",
colour = "Appreciation Index:",
x = "",
y = "UK Viewers (millions)"))(AIViewsEpSp <- ScatterSp(No_InSeries, UK_viewers_millions) +
geom_point(aes(colour = as.factor(Appreciation_Index)), size = 4, shape = 15) +
geom_segment(aes(x = No_InSeries, xend = No_InSeries, y = 0, yend = UK_viewers_millions, colour = as.factor(Appreciation_Index))) +
facet_wrap(~Series, scales = "free_x") +
guides(colour = guide_legend(nrow = 2, byrow = T)) +
labs(title = "UK Viewers and Appreciation Index for each Special Episode",
colour = "Appreciation Index:",
x = "",
y = ""))Observations:
(Directors <- n_distinct(dw$Directed_by))[1] 66
(DirCount <- Column(No_of_Directors, Series) +
geom_text(aes(label = No_of_Directors), colour = "#151F30", size = 4, position = position_stack(vjust = 0.5, reverse = T), fontface = "bold") +
facet_wrap(~SeriesCat, scales = "free_y") +
theme(axis.text.x=element_blank()) +
labs(
title = "Doctor Who: The Revival Era ~ Count of Directors by each Series"
))(AIVerDir <- Scatter(UK_viewers_millions, Directed_by) +
geom_point(aes(colour = Series), shape = 15) +
geom_jitter(aes(colour = Series, size = Appreciation_Index), alpha = 0.35, width = 0.05, shape = 15) +
facet_wrap(~SeriesCat, scales = "free_y") +
guides(colour = guide_legend(nrow = 3, byrow = T)) +
labs(title = "Doctor Who: The Revival Era ~ Views & Ratings by Director",
subtitle = "Note: Series Fifteen does not have any Appreciation Indexes",
size = "Appreciation Index",
x = "UK Viewers (millions):",
colour = "Series:"))Observations:
(Writers <- dw |>
group_by(Era, The_Doctor_Tenure, Series, EpisodeType) |>
count(WriterCat, name = "Count"))# A tibble: 40 × 6
# Groups: Era, The_Doctor_Tenure, Series, EpisodeType [30]
Era The_Doctor_Tenure Series EpisodeType WriterCat Count
<fct> <fct> <fct> <chr> <chr> <int>
1 Russell T Davies (1) Ninth Doctor One Series Solo Wri… 13
2 Russell T Davies (1) Tenth Doctor Two Series Solo Wri… 13
3 Russell T Davies (1) Tenth Doctor Two Special Solo Wri… 1
4 Russell T Davies (1) Tenth Doctor Three Series Solo Wri… 13
5 Russell T Davies (1) Tenth Doctor Three Special Solo Wri… 1
6 Russell T Davies (1) Tenth Doctor Four Series Solo Wri… 13
7 Russell T Davies (1) Tenth Doctor Four Special Solo Wri… 1
8 Russell T Davies (1) Tenth Doctor 2008-2010… Special Co-Writt… 2
9 Russell T Davies (1) Tenth Doctor 2008-2010… Special Solo Wri… 3
10 Steven Moffat Eleventh Doctor Five Series Solo Wri… 13
# ℹ 30 more rows
(Writ <- Column(No_of_Writers, Series) +
facet_wrap(~SeriesCat, scales = "free_y") +
geom_text(aes(label = No_of_Writers), colour = "#151F30", size = 4, position = position_stack(vjust = 0.5, reverse = T), fontface = "bold") +
theme(axis.text.x = element_blank()) +
labs(
title = "Doctor Who: The Revival Era ~ Count of Writers by each Showrunner",
subtitle = "Note: Does not differentiate between Writers & Co-Writers"
))(WritAiV <- Scatter(UK_viewers_millions, Written_by) +
geom_point(aes(colour = Series), shape = 15) +
geom_jitter(aes(colour = Series, size = Appreciation_Index), alpha = 0.35, width = 0.05, shape = 15) +
facet_wrap(~SeriesCat, scales = "free_y") +
labs(title = "Doctor Who: The Revival Era ~ Views & Ratings by Writer",
subtitle = "Note: Series Fifteen's episodes do not have any Appreciation Indexes, except for the Series Special",
size = "Appreciation Index:",
x = "UK Viewers (millions)",
colour = "Series:"))# Labels
Writprcnt <- dw |> group_by(Series, SeriesCat) |> count(ShowrunnerProp) |>
mutate(ratio=scales::percent(n/sum(n)))
(srprop <- ggplot(dw, aes(Series, fill = ShowrunnerProp)) +
geom_bar(position = "fill", alpha = .75, linewidth = 1, na.rm = T) +
geom_text(data = Writprcnt, aes(y = n,label = ratio),
position = position_fill(vjust = 0.5), colour = "#151F30") +
dwThemeLeg() +
scale_fill_manual(values = dwPalette(7)) +
scale_x_discrete(labels = function(x) str_wrap(x, width = 10), limits = rev) +
facet_wrap(~SeriesCat, scales = "free_y") +
theme(axis.text.x = element_blank()) +
coord_flip() +
labs(
title = "Doctor Who: The Revival Era ~ Proportion where a Showrunner wrote for Series",
y = "",
x = "",
fill = "Writer:",
caption = "Source: https://en.wikipedia.org/wiki/List_of_Doctor_Who_episodes_(2005–present)"
))(BroadcastSRWrit <- ggplot(dwSer, aes(Original_release_date, UK_viewers_millions)) +
geom_line(aes(colour = ShowrunnerProp, group = Series)) +
geom_point(aes(colour = ShowrunnerProp), size = 4, shape = 15, alpha = 0.75) +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
scale_x_date(date_breaks = "2 month", date_labels = "%m/%Y") +
facet_wrap(~Series, scales = "free_x", ncol = 5) +
scale_colour_manual(values = dwPalette(7)) +
dwThemeLeg() +
labs(title = "Doctor Who: The Revival Era ~ Timeline of Showrunner-written Episodes for each Series",
y = "UK Viewers (millions)",
colour = "(Co-)Writer:",
x = "",
caption = "Source: https://en.wikipedia.org/wiki/List_of_Doctor_Who_episodes_(2005–present)"))(SpEp <- ScatterSp(Original_release_date, UK_viewers_millions) +
geom_line(aes(colour = ShowrunnerProp, group = EpisodeType), linewidth = 1) +
geom_point(aes(colour = ShowrunnerProp), shape = 15) +
geom_jitter(aes(colour = ShowrunnerProp), size = 5, alpha = 0.5, shape = 15, width = 0.15) +
facet_wrap(~SeriesCat, scales = "free_x") +
scale_x_date(date_breaks = "2 year", date_labels = "%Y") +
labs(
title = "Doctor Who: The Revival Era ~ Timeline of Showrunner-written Special Episodes",
x = "",
colour = "Series:",
y = "UK Viewers (millions)",
caption = "Source: https://en.wikipedia.org/wiki/List_of_Doctor_Who_episodes_(2005–present)"))Observations:
Variety is the spice of life, but for a show like “Doctor Who” to thrive, it needs to develop a framework that compliments the restrictions of a reduced series length, rather than attempt to replicate the format of a series with 13 episodes. Moreover, for the show to flourish, it needs time for viewer habits to develop to changes in format, as well as an increased variety of writers - partly so that the Showrunner can focus on managing the show, but also to develop talent that benefits the future.