blob: ff832e01ca93514e8203d157bf9b8e8a50eb8ca9 [file] [log] [blame]
#!/usr/bin/env Rscript
#
# Plot frequency of an expressions under multiple conditions over time
#
#library(devtools)
#install_git("https://korap.ids-mannheim.de/gerrit/KorAP/RKorAPClient", upgrade="never")
library(RKorAPClient)
library(ggplot2)
library(reshape2)
#library(plotly)
conditionsOverTime <- function(query, conditions, years, kco = new("KorAPConnection", verbose = TRUE)) {
df = data.frame(year=years)
for (c in conditions) {
df[c] <- sapply(df$year, function(y)
corpusQuery(kco, query, vc=paste(c, "& pubDate in", y))@totalResults)
}
df <- melt(df, measure.vars = conditions, value.name = "afreq", variable.name = "condition")
df$total <- apply(df[,c('year','condition')], 1, function(x) corpusStats(kco, vc=paste(x[2], "& pubDate in", x[1]))@tokens )
df$ci <- t(sapply(Map(prop.test, df$afreq, df$total), "[[","conf.int"))
df$freq <- df$afreq / df$total
g <- ggplot(data = df, mapping = aes(x = year, y = freq, fill=condition, color=condition)) +
geom_point() +
geom_line() +
geom_ribbon(aes(ymin=ci[, 1], ymax=ci[, 2], fill=condition, color=condition), alpha=.3, linetype=0) +
xlab("TIME") +
labs(color="Virtual Corpus", fill="Virtual Corpus") +
ylab(sprintf("Observed frequency of \u201c%s\u201d", query)) +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) + scale_x_continuous(breaks=unique(df$year))
print(g)
# print(ggplotly(g, tooltip = c("x", "y")))
df
}
df <- conditionsOverTime("[tt/l=Heuschrecke]", c("textClass = /natur.*/", "textClass=/politik.*/", "textClass=/wirtschaft.*/"), (2002:2018))
#df <- conditionsOverTime("wegen dem [tt/p=NN]", c("textClass = /sport.*/", "textClass=/politik.*/", "textClass=/kultur.*/"), (1995:2005))