diff --git a/demo/00Index b/demo/00Index
index ad41293..d2148bb 100644
--- a/demo/00Index
+++ b/demo/00Index
@@ -1,12 +1,15 @@
-frequenciesOverTime         Plot frequency of query expressions over time
-frequenciesOverDomains      Box plot frequency of query expressions per topic domain
-conditionsOverTime          Plot frequency of query expressions over time under different conditions
-alternativesOverTime        Plot proportion of alternative spellings/variants over time
-regional                    Map plot regional frequencies of query expression
-mosaicplot                  Visualize frequencies of alternative query terms in relation to other variables
-shiny-frequency-curves      Web application that plots frequency curves with highcharts and shiny
-writtenVsSpoken             Compare frequencies in written vs. spoken corpora
-displayKwics                Display query results as KWICs via html
-light-verb-construction-ca  Collocation analysis to identify light verb constructions matching the pattern "in NN setzen", with result rendered as HTML DataTable
-highcharter-example         Visualize frequencies of optionally alternative terms over time with interactive HTML and JavaScript elements using the package highcharter as wrapper for Highcharts
-recursiveCA                 Show result dataframe of recursvie collocation analysis as pretty HTML tableb y Knitr via Markdown.
+frequenciesOverTime           Plot frequency of query expressions over time
+frequenciesOverDomains          Box plot frequency of query expressions per topic domain
+conditionsOverTime              Plot frequency of query expressions over time under different conditions
+alternativesOverTime            Plot proportion of alternative spellings/variants over time
+regional                        Map plot regional frequencies of query expression
+mosaicplot                      Visualize frequencies of alternative query terms in relation to other variables
+shiny-frequency-curves          Web application that plots frequency curves with highcharts and shiny
+writtenVsSpoken                 Compare frequencies in written vs. spoken corpora
+displayKwics                    Display query results as KWICs via html
+light-verb-construction-ca      Collocation analysis to identify light verb constructions matching the pattern "in NN setzen", with result rendered as HTML DataTable
+highcharter-example             Visualize frequencies of optionally alternative terms over time with interactive HTML and JavaScript elements using the package highcharter as wrapper for Highcharts
+recursiveCA                     Show result dataframe of recursvie collocation analysis as pretty HTML tableb y Knitr via Markdown.
+frequency_by_country_ggplot     Plot frequencies depending on country of publication using ggplot2.
+frequency_by_country_highcharts Plot frequencies depending on country of publication using highcharter.
+collocation_score_by_country    Plot collocation scores depending on country of publication using ggplot2.
diff --git a/demo/collocation_score_by_country.R b/demo/collocation_score_by_country.R
new file mode 100644
index 0000000..9d6dc69
--- /dev/null
+++ b/demo/collocation_score_by_country.R
@@ -0,0 +1,21 @@
+library(RKorAPClient)
+library(tidyverse)
+
+NODE <- '[tt/l=Ei]' # see https://github.com/KorAP/RKorAPClient/issues/8
+COLLOCATES <- c('[tt/l=pellen]', '[tt/l=sch\u00e4len]') # Demos may only contain ASCII characters
+COUNTRIES <- c("AT", "BE", "CH", "DE", "IT", "LU")
+VC <- "textType=/Zeit.*/ & pubPlaceKey=%s"
+
+df <- expand_grid(node = NODE, collocate = COLLOCATES, country = COUNTRIES) %>%
+  mutate(vc = sprintf(VC, country))
+
+g <- new("KorAPConnection", verbose=TRUE) %>%
+  collocationScoreQuery(df$node, df$collocate, df$vc, smoothingConstant = 0) %>%
+  bind_cols(df %>% select(country)) %>%
+  ggplot(aes(x = country, y = logDice, label = sprintf("(%d)", O), fill = collocate))  +
+  geom_col(position="dodge") +
+  geom_text(position = position_dodge(width = 0.9), vjust=1.5) +
+  labs(title = sprintf("Collocates of '%s' by country of publication.", NODE),
+       caption = "(absolute cooccurrence frequencies in parentheses)")
+
+print(g)
diff --git a/demo/frequency_by_country_ggplot.R b/demo/frequency_by_country_ggplot.R
new file mode 100644
index 0000000..514e8cf
--- /dev/null
+++ b/demo/frequency_by_country_ggplot.R
@@ -0,0 +1,18 @@
+library(RKorAPClient)
+library(ggplot2)
+
+query <- "[tt/l=verunfallen]" # search TreeTagger lemma annotations
+countries <- c("AT", "BE", "CH", "DE", "IT", "LU")
+
+vcs <- sprintf("textType=/Zeit.*/ & pubPlaceKey=%s", countries) # limit virtual corpus to newspapers and magazines
+
+g <- new("KorAPConnection", verbose=TRUE) %>%
+  frequencyQuery(query, vc=vcs) %>%
+  ipm() %>%
+  mutate(Land = countries) %>%
+  ggplot(aes(x = Land, y = ipm, ymin = conf.low, ymax = conf.high))  +
+  geom_col() +
+  geom_errorbar(width = .3, alpha = .3) +
+  ggtitle(sprintf("Relative frequency of '%s'", query))
+
+print(g)
diff --git a/demo/frequency_by_country_highcharts.R b/demo/frequency_by_country_highcharts.R
new file mode 100644
index 0000000..c04ea7d
--- /dev/null
+++ b/demo/frequency_by_country_highcharts.R
@@ -0,0 +1,46 @@
+library(RKorAPClient)
+library(highcharter)
+library(tidyverse)
+
+QUERIES <- c("[tt/l=verunfallen]", "Sonnabend") # search in treetagger lemma annotations
+COUNTRIES <- c("AT", "BE", "CH", "DE", "IT", "LU")
+
+VCS <- sprintf("textType=/Zeit.*/ & pubPlaceKey=%s", COUNTRIES) # limit virtual corpus to newspapers and magazines
+
+
+df <- new("KorAPConnection", verbose=TRUE) %>%
+  frequencyQuery(QUERIES, vc=VCS) %>%
+  ipm() %>%
+  mutate(country = rep(COUNTRIES, length(QUERIES)))
+
+
+hc_add_series_with_errorbar <- function(hc, data) {
+  for (g in unique(data$country)) {
+    df <- data %>% filter(country == g)
+    hc <-
+      hc %>%
+      hc_add_series(type = "column", data = df, hcaes(group = country, x = query, y = ipm)) %>%
+      hc_add_series(type = "errorbar",
+                    data = df,
+                    stemWidth = 1,
+                    whiskerWidth = 1,
+                    whiskerLength = 10, hcaes(low = conf.low, high = conf.high)
+      )
+  }
+  hc
+}
+
+hc <- highchart() %>%
+  hc_add_theme(hc_theme_smpl()) %>%
+  hc_yAxis(title=list(text = "IPM"), type = "logarithmic") %>%
+  hc_add_series_with_errorbar(data = df) %>%
+  hc_add_onclick_korap_search() %>%
+  hc_xAxis(categories = QUERIES) %>%
+  hc_legend(enabled = TRUE) %>%
+  hc_title(text = "Relative frequency by country of publication") %>%
+  hc_caption(text= "Click on a bar to launch the respectively corresponding KorAP query.")
+
+
+print(hc)
+
+
