Einführung in eatPlot

Nicklas Hafiz

Zu diesen Folien

HTML-Folien können durch tippen von e in PDF umgewandelt werden, und dann mit Drucken aus dem Browser abgespeichert werden, falls ihr darin kommentieren wollt.

Roadmap



  1. Einführung
  2. Allgemeiner Workflow
  3. Linienplots
  4. Tabellen/Barplots

eatPlot

# install.packages("devtools")
devtools::install_github("nickhaf/eatPlot")

Automatisiert die Grafikerstellung für eatRep-Output (vor allem BT-Grafiken).

Das Paket befindet sich noch in Entwicklung. Die Beispiele in dieser Präsentation sind vorläufig, können sich also noch leicht ändern. Ich werde alle Änderungen aber in den online-Vorlagen anpassen.

Warum?

  • Schnell selbst durchführbar
  • Reproduzierbar
  • Vereinfachung der Plot-Erstellung durch “Plug-and-Play”-Vorlagen
  • Einfach updatebar
  • Weniger fehleranfällig

Allgemeiner Workflow

Datenformat

str(trend_3)
List of 4
 $ plain      :'data.frame':    6642 obs. of  18 variables:
  ..$ label1       : chr [1:6642] "aohneZWH_total for year 2009" "aohneZWH_total for year 2009" "aohneZWH_total for year 2009" "aohneZWH_Baden-Wuerttemberg for year 2009" ...
  ..$ label2       : chr [1:6642] "year=2009: mhg=aohneZWH, TR_BUNDESLAND=total" "year=2009: mhg=aohneZWH, TR_BUNDESLAND=total" "year=2009: mhg=aohneZWH, TR_BUNDESLAND=total" "year=2009: mhg=aohneZWH, TR_BUNDESLAND=Baden-Wuerttemberg" ...
  ..$ depVar       : chr [1:6642] "bista" "bista" "bista" "bista" ...
  ..$ modus        : chr [1:6642] "CONV.mean" "CONV.mean" "CONV.mean" "CONV.mean" ...
  ..$ comparison   : chr [1:6642] "none" "none" "none" "none" ...
  ..$ parameter    : chr [1:6642] "mean" "Ncases" "sd" "mean" ...
  ..$ mhg          : chr [1:6642] "aohneZWH" "aohneZWH" "aohneZWH" "aohneZWH" ...
  ..$ TR_BUNDESLAND: chr [1:6642] "total" "total" "total" "Baden-Wuerttemberg" ...
  ..$ kb           : chr [1:6642] "hoeren" "hoeren" "hoeren" "hoeren" ...
  ..$ spf          : chr [1:6642] "alle" "alle" "alle" "alle" ...
  ..$ year         : chr [1:6642] "2009" "2009" "2009" "2009" ...
  ..$ es           : num [1:6642] NA NA NA NA NA NA NA NA NA NA ...
  ..$ est          : num [1:6642] 533.4 23722 81.8 543.3 1507 ...
  ..$ p            : num [1:6642] 0 NA NA 0 NA NA 0 NA NA 0 ...
  ..$ se           : num [1:6642] 0.797 NA NA 2.668 NA ...
  ..$ id           : chr [1:6642] "group_1883" "group_1883" "group_1883" "group_1887" ...
  ..$ unit_1       : chr [1:6642] NA NA NA NA ...
  ..$ unit_2       : chr [1:6642] NA NA NA NA ...
 $ comparisons:'data.frame':    3852 obs. of  4 variables:
  ..$ id        : chr [1:3852] "comp_1" "comp_2" "comp_3" "comp_4" ...
  ..$ unit_1    : chr [1:3852] "group_1883" "group_1883" "group_1887" "group_1887" ...
  ..$ unit_2    : chr [1:3852] "group_2667" "group_1887" "group_1983" "group_2667" ...
  ..$ comparison: chr [1:3852] "crossDiff" "crossDiff" "crossDiff" "crossDiff" ...
 $ group      :'data.frame':    306 obs. of  6 variables:
  ..$ id           : chr [1:306] "group_1883" "group_1887" "group_1893" "group_1899" ...
  ..$ mhg          : chr [1:306] "aohneZWH" "aohneZWH" "aohneZWH" "aohneZWH" ...
  ..$ TR_BUNDESLAND: chr [1:306] "total" "Baden-Wuerttemberg" "Bayern" "Berlin" ...
  ..$ year         : chr [1:306] "2009" "2009" "2009" "2009" ...
  ..$ kb           : chr [1:306] "hoeren" "hoeren" "hoeren" "hoeren" ...
  ..$ spf          : chr [1:306] "alle" "alle" "alle" "alle" ...
 $ estimate   :'data.frame':    6642 obs. of  7 variables:
  ..$ id       : chr [1:6642] "group_1883" "group_1883" "group_1883" "group_1887" ...
  ..$ depVar   : chr [1:6642] "bista" "bista" "bista" "bista" ...
  ..$ parameter: chr [1:6642] "mean" "Ncases" "sd" "mean" ...
  ..$ est      : num [1:6642] 533.4 23722 81.8 543.3 1507 ...
  ..$ se       : num [1:6642] 0.797 NA NA 2.668 NA ...
  ..$ p        : num [1:6642] 0 NA NA 0 NA NA 0 NA NA 0 ...
  ..$ es       : num [1:6642] NA NA NA NA NA NA NA NA NA NA ...

Datenaufbereitung

Es gibt zwei Prep-Funktionen:

lineplot_prepped <- prep_lineplot(trend_3, subgroup_var = "mhg")
tableplot_prepped <- prep_tablebarplot(trend_mw, 
                                       subgroup_var = "geschlecht",
                                       comparisons = c("none", "crossDiff"))

Datenaufbereitung

str(lineplot_prepped)
'data.frame':   612 obs. of  50 variables:
 $ unit                                             : chr  "group_1883" "group_1883" "group_1887" "group_1887" ...
 $ mhg                                              : chr  "aohneZWH" "aohneZWH" "aohneZWH" "aohneZWH" ...
 $ TR_BUNDESLAND                                    : chr  "total" "total" "Baden-Wuerttemberg" "Baden-Wuerttemberg" ...
 $ year                                             : num  2009 2009 2009 2009 2009 ...
 $ kb                                               : chr  "hoeren" "hoeren" "hoeren" "hoeren" ...
 $ spf                                              : chr  "alle" "alle" "alle" "alle" ...
 $ subgroup_var                                     : chr  "aohneZWH" "aohneZWH" "aohneZWH" "aohneZWH" ...
 $ depVar                                           : chr  "bista" "bista" "bista" "bista" ...
 $ parameter                                        : chr  "mean" "mean" "mean" "mean" ...
 $ trend                                            : chr  "2009_2022" "2009_2015" "2009_2022" "2009_2015" ...
 $ es_comparison_crossDiff_subgroupTotal            : num  NA NA 0.243 0.243 0.224 0.224 0.395 0.395 0.05 0.05 ...
 $ es_comparison_crossDiffTotal                     : num  NA NA 0.121 0.121 0.166 0.166 -0.118 -0.118 -0.39 -0.39 ...
 $ es_comparison_crossDiffTotal_subgroupTotal       : num  NA NA 0.346 0.346 0.396 0.396 0.109 0.109 -0.154 -0.154 ...
 $ es_comparison_none                               : num  NA NA NA NA NA NA NA NA NA NA ...
 $ es_comparison_trend                              : num  -0.445 -0.126 -0.373 -0.229 -0.513 -0.173 -0.352 0.022 -0.446 0.139 ...
 $ es_comparison_trend_crossDiff_subgroupTotal      : num  NA NA 2.406 1.041 0.593 ...
 $ es_comparison_trend_crossDiffTotal               : num  NA NA 0.92 -2.605 -0.824 ...
 $ es_comparison_trend_crossDiffTotal_subgroupTotal : num  NA NA 4.068 -1.303 0.852 ...
 $ est_comparison_crossDiff_subgroupTotal           : num  NA NA 20.7 20.7 18.2 ...
 $ est_comparison_crossDiffTotal                    : num  NA NA 9.93 9.93 13.26 ...
 $ est_comparison_crossDiffTotal_subgroupTotal      : num  NA NA 29.6 29.6 33 ...
 $ est_comparison_none                              : num  533 533 543 543 547 ...
 $ est_comparison_trend                             : num  -41.7 -10.9 -36.6 -20.4 -45.6 ...
 $ est_comparison_trend_crossDiff_subgroupTotal     : num  NA NA 21.8 14.09 5.47 ...
 $ est_comparison_trend_crossDiffTotal              : num  NA NA 5.03 -9.53 -3.94 ...
 $ est_comparison_trend_crossDiffTotal_subgroupTotal: num  NA NA 21.35 -6.73 12.38 ...
 $ p_comparison_crossDiff_subgroupTotal             : num  NA NA 0 0 0 0 0 0 0.16 0.16 ...
 $ p_comparison_crossDiffTotal                      : num  NA NA 0 0 0 0 0.001 0.001 0 0 ...
 $ p_comparison_crossDiffTotal_subgroupTotal        : num  NA NA 0 0 0 0 0.001 0.001 0 0 ...
 $ p_comparison_none                                : num  0 0 0 0 0 0 0 0 0 0 ...
 $ p_comparison_trend                               : num  0 0 0 0 0 0.001 0 0.695 0 0.004 ...
 $ p_comparison_trend_crossDiff_subgroupTotal       : num  NA NA 0.004 0.025 0.432 0.957 0.05 0.143 0.501 0.791 ...
 $ p_comparison_trend_crossDiffTotal                : num  NA NA 0.459 0.061 0.53 0.472 0.397 0.016 0.888 0 ...
 $ p_comparison_trend_crossDiffTotal_subgroupTotal  : num  NA NA 0.002 0.183 0.047 0.91 0.001 0.003 0.014 0 ...
 $ se_comparison_crossDiff_subgroupTotal            : num  NA NA 3.54 3.54 2.77 ...
 $ se_comparison_crossDiffTotal                     : num  NA NA 2.79 2.79 2.25 ...
 $ se_comparison_crossDiffTotal_subgroupTotal       : num  NA NA 2.76 2.76 2.22 ...
 $ se_comparison_none                               : num  0.797 0.797 2.668 2.668 2.099 ...
 $ se_comparison_trend                              : num  4.94 3.07 6.65 4.92 6.13 ...
 $ se_comparison_trend_crossDiff_subgroupTotal      : num  NA NA 7.65 6.26 6.97 ...
 $ se_comparison_trend_crossDiffTotal               : num  NA NA 6.78 5.08 6.27 ...
 $ se_comparison_trend_crossDiffTotal_subgroupTotal : num  NA NA 6.75 5.06 6.24 ...
 $ sig_comparison_crossDiff_subgroupTotal           : logi  FALSE FALSE TRUE TRUE TRUE TRUE ...
 $ sig_comparison_crossDiffTotal                    : logi  FALSE FALSE TRUE TRUE TRUE TRUE ...
 $ sig_comparison_crossDiffTotal_subgroupTotal      : logi  FALSE FALSE TRUE TRUE TRUE TRUE ...
 $ sig_comparison_none                              : logi  TRUE TRUE TRUE TRUE TRUE TRUE ...
 $ sig_comparison_trend                             : logi  TRUE TRUE TRUE TRUE TRUE TRUE ...
 $ sig_comparison_trend_crossDiff_subgroupTotal     : logi  FALSE FALSE TRUE TRUE FALSE FALSE ...
 $ sig_comparison_trend_crossDiffTotal              : logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
 $ sig_comparison_trend_crossDiffTotal_subgroupTotal: logi  FALSE FALSE TRUE FALSE TRUE FALSE ...

Datenaufbereitung

str(tableplot_prepped)
'data.frame':   85 obs. of  49 variables:
 $ depVar                      : chr  "bista" "bista" "bista" "bista" ...
 $ geschlecht                  : chr  "w" "w" "w" "w" ...
 $ TR_BUNDESLAND               : chr  "total" "Baden-Wuerttemberg" "Bayern" "Berlin" ...
 $ est_2009_none_mean          : num  32 63.2 45.9 27.8 23.6 ...
 $ est_2015_none_mean          : num  37.8 41 25.2 32 33.6 ...
 $ est_2022_none_mean          : num  50.5 29.1 30.3 71 47.8 ...
 $ est_2009_crossDiff_mean     : num  NA NA NA NA NA NA NA NA NA NA ...
 $ est_2015_crossDiff_mean     : num  NA NA NA NA NA NA NA NA NA NA ...
 $ est_2022_crossDiff_mean     : num  NA NA NA NA NA NA NA NA NA NA ...
 $ est_2009_crossDiffTotal_mean: num  NA 43.7 62 39.8 54.2 ...
 $ est_2015_crossDiffTotal_mean: num  NA 44.4 42.1 43.5 50.4 ...
 $ est_2022_crossDiffTotal_mean: num  NA 38.8 47 38.3 31.5 ...
 $ se_2009_none_mean           : num  0.797 2.668 2.099 2.883 2.308 ...
 $ se_2015_none_mean           : num  0.992 3.04 2.733 3.322 2.549 ...
 $ se_2022_none_mean           : num  1.06 3.8 3.24 3.6 3.17 ...
 $ se_2009_crossDiff_mean      : num  NA NA NA NA NA NA NA NA NA NA ...
 $ se_2015_crossDiff_mean      : num  NA NA NA NA NA NA NA NA NA NA ...
 $ se_2022_crossDiff_mean      : num  NA NA NA NA NA NA NA NA NA NA ...
 $ se_2009_crossDiffTotal_mean : num  NA 2.79 2.25 2.99 2.44 ...
 $ se_2015_crossDiffTotal_mean : num  NA 3.2 2.91 3.47 2.73 ...
 $ se_2022_crossDiffTotal_mean : num  NA 3.94 3.41 3.76 3.35 ...
 $ es_2009_none_mean           : num  -0.372 -1.495 0.36 0.694 -0.522 ...
 $ es_2015_none_mean           : num  0.749 0.459 -0.807 0.24 0.357 ...
 $ es_2022_none_mean           : num  0.487 0.605 -0.192 -0.536 1.106 ...
 $ es_2009_crossDiff_mean      : num  NA NA NA NA NA NA NA NA NA NA ...
 $ es_2015_crossDiff_mean      : num  NA NA NA NA NA NA NA NA NA NA ...
 $ es_2022_crossDiff_mean      : num  NA NA NA NA NA NA NA NA NA NA ...
 $ es_2009_crossDiffTotal_mean : num  NA -0.991 0.161 -0.482 0.71 ...
 $ es_2015_crossDiffTotal_mean : num  NA 0.198 0.104 -1.331 0.203 ...
 $ es_2022_crossDiffTotal_mean : num  NA -0.234 0.615 -0.133 0.784 ...
 $ sig_2009_none_mean          : logi  FALSE TRUE TRUE FALSE FALSE FALSE ...
 $ sig_2015_none_mean          : logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
 $ sig_2022_none_mean          : logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
 $ sig_2009_crossDiff_mean     : logi  NA NA NA NA NA NA ...
 $ sig_2015_crossDiff_mean     : logi  NA NA NA NA NA NA ...
 $ sig_2022_crossDiff_mean     : logi  NA NA NA NA NA NA ...
 $ sig_2009_crossDiffTotal_mean: logi  NA FALSE TRUE TRUE FALSE FALSE ...
 $ sig_2015_crossDiffTotal_mean: logi  NA FALSE FALSE FALSE FALSE FALSE ...
 $ sig_2022_crossDiffTotal_mean: logi  NA FALSE FALSE FALSE FALSE FALSE ...
 $ p_2009_none_mean            : num  0.0766 0.0398 0.0408 0.5275 0.1505 ...
 $ p_2015_none_mean            : num  0.154 0.232 0.35 0.27 0.223 ...
 $ p_2022_none_mean            : num  0.104 0.0835 0.3648 0.1522 0.0518 ...
 $ p_2009_crossDiff_mean       : num  NA NA NA NA NA NA NA NA NA NA ...
 $ p_2015_crossDiff_mean       : num  NA NA NA NA NA NA NA NA NA NA ...
 $ p_2022_crossDiff_mean       : num  NA NA NA NA NA NA NA NA NA NA ...
 $ p_2009_crossDiffTotal_mean  : num  NA 0.1776 0.0211 0.0474 0.481 ...
 $ p_2015_crossDiffTotal_mean  : num  NA 0.302 0.14 0.431 0.605 ...
 $ p_2022_crossDiffTotal_mean  : num  NA 0.2634 0.0822 0.14 0.4469 ...
 $ y_axis                      : int  1 2 3 4 5 6 7 8 9 10 ...

Ploterstellung

?plot_lineplot
?plot_tablebarplot

Neben der R-internen Hilfe zu den Funktionen sollten auch die online-Vorlagen verwendet werden.

Plot settings

Einstellungen zum Aussehen der Plots werden so vorgenommen:

?plotsettings_lineplot
?plotsettings_tablebarplot

Es gibt dabei voreingestellte Setting-Objekte, die genutzt werden können:

plotsettings_lineplot(default_list = lineplot_4x4)

Linienplots

Daten

trend_dat <- readRDS("I:/Methoden/02_IQB-interne_eat_Workshops/eatRep_2024/Beispieloutputs/04_meansAufbereitet.rds")

Wir möchten einen Linienplot für eine Gruppe erstellen.

Erstellen des Plots

Die Beispiele finden sich hier.

Achtung
Die Beispiele dienen nur der Illustration und sind noch nicht final für den BT freigegeben. Bitte schaut zur Erstellung der Grafiken dann auf der Webseite vorbei.

Mehrere Kompetenzbereiche

plot_my_lineplot <- function(eatRep_kb){

kb_prepped <- prep_lineplot(
  eatRep_kb
)

plot_kb <- plot_lineplot(
  kb_prepped,
  years_lines = list(c(2009, 2015), c(2015, 2022)),
  years_braces = list(c(2009, 2015), c(2015, 2022)),
  plot_settings = plotsettings_lineplot(default_list = lineplot_4x4)
)

return(plot_kb)
}
plots_6.6_kbs <- lapply(eatRep_kb_list, plot_my_lineplot )

Zwei Gruppen

Für zwei Gruppen funktioniert das ganz ähnlich.

trend_dat_geschlecht <- readRDS("I:/Methoden/02_IQB-interne_eat_Workshops/eatRep_2024/Beispieloutputs/disp_geschlecht.rds")

Tabellen/Barplots

Daten

trend_dat_geschlecht <- readRDS("I:/Methoden/02_IQB-interne_eat_Workshops/eatRep_2024/Beispieloutputs/disp_geschlecht.rds")

Wir möchten Abbildung 6.6 aus dem Geschlechterkapitel erstellen.

Erstellen des Plots

Die Beispiele finden sich hier.

Achtung
Die Beispiele dienen nur der Illustration und sind noch nicht final für den BT freigegeben. Bitte schaut zur Erstellung der Grafiken dann auf der Webseite vorbei.

Kleines Markdown/HTML-1x1

  • Das ist mein fettgedruckter Text: **Das ist mein fettgedruckter Text**
  • Das ist mein Kursiver Text: *Das ist mein Kursiver Text*
  • Hochgestelltesa: Hochgestelltes<sup>a</sup>
  • Tiefgestelltesyaay: Tiefgestelltes<sub>yaay</sub>

Mehrere Kompetenzbereiche

plot_my_tableplot_6.6 <- function(eatRep_kb){

kb_prepped <- prep_tablebarplot(
  eatRep_kb
  # ...
)

plot_kb <- plot_tablebarplot(
  kb_prepped
  # ...
)

return(plot_kb)
}
plots_6.6 <- lapply(eatRep_kb_list, plot_my_tableplot_6.6)

Bilder