Das Jahr neigt sich dem Ende zu und die ersten Jahresrückblicke tauchen auf. Dabei ist auch ein gelungener Blick auf das Jahr 2021 anhand des Suchinteresses ausgewählter Begriffe bei Google. Das hat meinen Ehrgeiz geweckt, den Code für solch eine gelungene Grafik zu verstehen und die Suchbegriffe zu überarbeiten. Anbei der Code wie ich es geschafft habe; vieles davon war trial and error:
library(gtrendsR)
library(dplyr)
library(viridis)
library(ggplot2)
library(ggridges)
library(colourvalues)
library(ggtext)
start_date = "2021-01-01"
end_date = "2021-12-20"
trend_1 <- gtrends(c("Europameisterschaft", "Bundestagswahl", "Lockdown", "Bundesliga", "Olympia"),
gprop='web', geo="DE", time=paste0(start_date," ",end_date), onlyInterest = TRUE)
trend_2 <- gtrends(c("Whatsapp", "Biontech", "Merkel", "Gamestop", "Booster"),
gprop='web', geo="DE", time=paste0(start_date," ",end_date), onlyInterest = TRUE)
trend_3 <- gtrends(c("Suezkanal", "Hochwasser", "Afghanistan", "Squid Game", "Log4j"),
gprop='web', geo="DE", time=paste0(start_date," ",end_date), onlyInterest = TRUE)
trend_4 <- gtrends(c("Impfpflicht", "Omikron", "Delta", "Benzinpreis"),
gprop='web', geo="DE", time=paste0(start_date," ",end_date), onlyInterest = TRUE)
time_trend <- trend_1$interest_over_time %>%
rbind(trend_2$interest_over_time) %>%
rbind(trend_3$interest_over_time) %>%
rbind(trend_4$interest_over_time) %>%
select(date, hits, keyword) %>%
mutate(date = as.Date(date)) %>%
mutate_at("hits", ~ifelse(. == "<1", 0.5, .)) %>% # Ersetzen mit 0.5
mutate_at("hits", ~as.numeric(.))
head(time_trend)
## date hits keyword
## 1 2021-01-03 0.5 Europameisterschaft
## 2 2021-01-10 0.5 Europameisterschaft
## 3 2021-01-17 0.5 Europameisterschaft
## 4 2021-01-24 0.5 Europameisterschaft
## 5 2021-01-31 0.5 Europameisterschaft
## 6 2021-02-07 0.5 Europameisterschaft
Die Reihenfolge der Suchbegriffe lege ich händisch fest. Genauso muss ich den Farbcode für die Labels festlegen. In ggplot2() kann die Farbe zwar zur Grafik selbst gemappt werden, nicht aber zu den Labels. Deswegen der extra-Vektor mit den gleichen Farbcodes, wie jenen für die Grafik verwendeten.
order <- c("Log4j", "Merkel", "Omkiron", "Impfpflicht", "Booster", "Benzinpreis", "Squid Game", "Whatsapp", "Bundestagswahl", "Afghanistan", "Olympia", "Bundesliga", "Europameisterschaft","Biontech","Hochwasser", "Delta", "Suezkanal", "Gamestop", "Lockdown")
label_colors <- colour_values(1:length(unique(time_trend$keyword)), palette="cividis")
Viel Code für nur eine Grafik.
time_trend %>%
arrange(factor(keyword, levels = order)) %>%
ggplot(aes(x=date, y=factor(keyword, levels=order), group=keyword, height=hits,
fill=factor(keyword, levels=order), colour=factor(keyword, levels=order))) +
geom_segment(aes(x=as.Date("2020-10-15"),xend=as.Date("2021-12-01"),
y=factor(keyword, levels=order),yend=factor(keyword, levels=order)), size=0.5) +
geom_density_ridges2(stat="identity", scale = 3) +
geom_text(data = time_trend,
aes(label=keyword),
x = as.Date("2020-10-15"),
size=10, check_overlap = TRUE,
hjust=0, vjust=-0.5) +
scale_fill_viridis(discrete = TRUE, option="cividis", guide="none") +
scale_color_viridis(discrete = TRUE, option="cividis", guide="none") +
scale_x_date(date_labels = "%b",
breaks = seq(as.Date("2021-01-01"), as.Date("2021-12-01"), by = "1 month")) +
labs(x="", y="", caption="das Jahr 2021 auf Google") +
theme(legend.position="none",
axis.ticks = element_blank(),
axis.text.y = element_blank(),
plot.caption = element_text(vjust = 4, size = 20, face = "bold"),
axis.text.x = element_markdown(colour="grey"),
panel.background = element_blank())