From 49414e92953b1035d533b15ec47f04b13f819914 Mon Sep 17 00:00:00 2001 From: Janne Adolf Date: Wed, 27 Nov 2024 15:00:24 +0100 Subject: [PATCH] add script to visualize scoring of questions --- .../export/survey_experts/0x_plot_questions.R | 102 ++++++++++++++++++ .../results/question_overview_scoring.pdf | Bin 0 -> 21077 bytes 2 files changed, 102 insertions(+) create mode 100644 source/export/survey_experts/0x_plot_questions.R create mode 100644 source/export/survey_experts/results/question_overview_scoring.pdf diff --git a/source/export/survey_experts/0x_plot_questions.R b/source/export/survey_experts/0x_plot_questions.R new file mode 100644 index 0000000..bb35e8d --- /dev/null +++ b/source/export/survey_experts/0x_plot_questions.R @@ -0,0 +1,102 @@ +rm(list = ls()) +list.files("source/functions", full.names = TRUE) |> + lapply(source) |> + invisible() +# +# +# --- definitions --------------- +# +# path to questions +questions_file <- "source/export/survey_experts/questions_long.rda" +# +# path +save_path <- "source/export/survey_experts/results/" +# +# +# --- import data with questions and answers --------------- +# +questions_long <- get(load(questions_file)) +# +# +# --- visualize scores --------------- +# +# prepare data for plotting +questions_tmp <- questions_long |> + # filter rows + dplyr::filter(question_include_in_form == 1, question_use_for_ranking == 1) |> + tidyr::drop_na(score_response_option) |> + # insert line breaks in questions & shorten responses + dplyr::mutate(index = dplyr::row_number()) |> + dplyr::mutate( + question_text = question_text |> + stringr::str_wrap(width = 60) |> + paste(x = _, NULL, collapse = "\n"), + response_option = response_option |> + stringr::str_trunc(string = _, width = 65), + .by = index + ) |> + dplyr::select(-index) +# order questions & sections +levels_q <- questions_tmp$question_text |> unique() |> rev() +levels_s <- questions_tmp$section_title |> unique() +questions_plot <- questions_tmp |> + dplyr::mutate( + question_factor = factor(question_text, levels = levels_q), + section_factor = factor(section_title, levels = levels_s) + ) |> + # merge labels based on response scores + tidyr::pivot_wider( + values_from = response_option, + names_from = score_response_option, + values_fn = function(x) paste(x, collapse = "\n") + ) |> + tidyr::pivot_longer( + cols = paste(1:4), + names_to = "score", + values_to = "response" + ) |> + dplyr::mutate( + score = as.numeric(score) + ) +# +plot <- ggplot2::ggplot( + data = questions_plot, + mapping = ggplot2::aes(x = score, y = question_factor)) + + ggplot2::geom_rect( + ggplot2::aes(fill = section_factor), + xmin = -Inf, + xmax = Inf, + ymin = -Inf, + ymax = Inf, + alpha = 0.05 + ) + + ggplot2::geom_label( + ggplot2::aes(label = response), + hjust = 0, + size = 3, + angle = 0, + alpha = .9 + ) + + ggplot2::facet_grid( + rows = ggplot2::vars(section_factor), + scales = "free", + space = "free") + + ggplot2::scale_x_continuous( + breaks = 1:4, + labels = paste(1:4, c("\nKleine haalbaarheid / nood", "", "", "\nGrote haalbaarheid / nood")) + ) + + ggplot2::labs(x = "", y = "") + + ggplot2::coord_cartesian(xlim = c(0.5,5)) + + ggplot2::theme_bw() + + ggplot2::theme( + panel.grid = ggplot2::element_blank(), + strip.background = ggplot2::element_blank(), + legend.position = "none" + ) + + cols4all::scale_fill_discrete_c4a_cat(palette = "carto.pastel") +ggplot2::ggsave(paste0(save_path, "question_overview_scoring.pdf"), width = 600, height = 250, units = "mm") + + + + + diff --git a/source/export/survey_experts/results/question_overview_scoring.pdf b/source/export/survey_experts/results/question_overview_scoring.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1c0a2a03a7741731e314b4e44dc8e00737ccfdf0 GIT binary patch literal 21077 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