我想通過做兩件事來改進我的圖表。首先,我想添加一個包含每個變數平均值的點。其次,我想讓點大小成為每個變數中實際存在多少次值的函式。如果您對如何使我的圖表更清晰有任何其他建議,請猶豫向我提出。十分感謝 !
MD4_long <- MD4 %>%
pivot_longer(everything()) %>%
mutate(value = as.numeric(value) - 3,
value = ifelse(value == 3, NA, value)) %>%
group_by(name)
ggplot(MD4_long, aes(x = value, y = reorder(name, value)))
geom_point(aes (colour = value, size = 3))
scale_y_discrete(labels = ~gsub("^.*_", "", .x))
theme_light()
scale_colour_viridis_c(aesthetics = "colour")
labs(x = NULL, y = NULL)

structure(list(ver?nderung_imap_austausch.verst?rkt.akteuren = structure(c(3L,
4L, NA, NA, 3L, 4L, 4L, 3L, NA, NA, NA, NA, NA, NA, NA, 3L, NA,
NA, NA, NA, NA, 4L, NA, NA, NA, NA, 3L, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, 5L, NA, 4L, NA, NA, NA, NA, NA, 5L, 4L, NA, NA, NA, 4L, 3L,
NA, NA, NA, NA, NA, NA, NA, NA, 5L, 3L, 4L, NA, NA, NA, 4L, 4L,
NA, 1L, 4L, NA, 3L, 4L, 3L, NA, NA, NA, 5L, 5L, 3L, NA, NA, NA,
5L, NA, 1L, 4L, NA, 4L, NA, 4L, 4L, 4L, 3L, 3L, 3L, NA, 3L, 6L,
2L), .Label = c("Stimme nicht zu", "Stimme eher nicht zu", "Stimme teilweise zu",
"Stimme zu", "Stimme voll zu", "k. A."), class = c("ordered",
"factor")), ver?nderung_imap_austausch.verst?rkt.ideen = structure(c(5L,
4L, NA, NA, 3L, 4L, 4L, 2L, NA, NA, NA, NA, NA, NA, NA, 4L, NA,
NA, NA, NA, NA, 4L, NA, NA, NA, NA, 4L, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, 5L, NA, 4L, NA, NA, NA, NA, NA, 4L, 4L, NA, NA, NA, 4L, 3L,
NA, NA, NA, NA, NA, NA, NA, NA, 5L, 4L, 5L, NA, NA, NA, 4L, 4L,
NA, 3L, 4L, NA, 2L, 4L, 4L, NA, NA, NA, 5L, 5L, 3L, NA, NA, NA,
5L, NA, 4L, 4L, NA, 4L, NA, 3L, 5L, 4L, 3L, 4L, 4L, NA, 4L, 6L,
3L), .Label = c("Stimme nicht zu", "Stimme eher nicht zu", "Stimme teilweise zu",
"Stimme zu", "Stimme voll zu", "k. A."), class = c("ordered",
"factor")), ver?nderung_imap_fortschritt.umsetzung = structure(c(4L,
4L, NA, NA, 3L, 4L, 6L, 3L, NA, NA, NA, NA, NA, NA, NA, 4L, NA,
NA, NA, NA, NA, 4L, NA, NA, NA, NA, 4L, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, 4L, NA, 4L, NA, NA, NA, NA, NA, 5L, 3L, NA, NA, NA, 4L, 3L,
NA, NA, NA, NA, NA, NA, NA, NA, 4L, 3L, 4L, NA, NA, NA, 4L, 4L,
NA, 3L, 4L, NA, 3L, 3L, 4L, NA, NA, NA, 5L, 5L, 3L, NA, NA, NA,
5L, NA, 3L, 3L, NA, 4L, NA, 3L, 5L, 3L, 4L, 2L, 3L, NA, 3L, 6L,
3L), .Label = c("Stimme nicht zu", "Stimme eher nicht zu", "Stimme teilweise zu",
"Stimme zu", "Stimme voll zu", "k. A."), class = c("ordered",
"factor")), ver?nderung_imap_neue.strukturen = structure(c(4L,
4L, NA, NA, 3L, 4L, 4L, 3L, NA, NA, NA, NA, NA, NA, NA, 3L, NA,
NA, NA, NA, NA, 3L, NA, NA, NA, NA, 3L, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, 3L, NA, 4L, NA, NA, NA, NA, NA, 5L, 3L, NA, NA, NA, 4L, 3L,
NA, NA, NA, NA, NA, NA, NA, NA, 4L, 4L, 3L, NA, NA, NA, 4L, 4L,
NA, 3L, 4L, NA, 3L, 4L, 4L, NA, NA, NA, 5L, 4L, 3L, NA, NA, NA,
5L, NA, 5L, 3L, NA, 5L, NA, 3L, 5L, 3L, 2L, 2L, 2L, NA, 2L, 6L,
1L), .Label = c("Stimme nicht zu", "Stimme eher nicht zu", "Stimme teilweise zu",
"Stimme zu", "Stimme voll zu", "k. A."), class = c("ordered",
"factor")), ver?nderung_imap_zust?ndigkeiten.klarer = structure(c(3L,
3L, NA, NA, 3L, 4L, 6L, 3L, NA, NA, NA, NA, NA, NA, NA, 2L, NA,
NA, NA, NA, NA, 3L, NA, NA, NA, NA, 3L, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, 3L, NA, 4L, NA, NA, NA, NA, NA, 3L, 3L, NA, NA, NA, 3L, 3L,
NA, NA, NA, NA, NA, NA, NA, NA, 3L, 3L, 4L, NA, NA, NA, 3L, 3L,
NA, 4L, 3L, NA, 3L, 3L, 4L, NA, NA, NA, 5L, 4L, 3L, NA, NA, NA,
5L, NA, 2L, 4L, NA, 3L, NA, 3L, 3L, 3L, 3L, 2L, 2L, NA, 4L, 6L,
2L), .Label = c("Stimme nicht zu", "Stimme eher nicht zu", "Stimme teilweise zu",
"Stimme zu", "Stimme voll zu", "k. A."), class = c("ordered",
"factor")), ver?nderung_imap_rollen.klarer = structure(c(3L,
3L, NA, NA, 3L, 4L, 6L, 2L, NA, NA, NA, NA, NA, NA, NA, 3L, NA,
NA, NA, NA, NA, 3L, NA, NA, NA, NA, 2L, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, 4L, NA, 4L, NA, NA, NA, NA, NA, 3L, 1L, NA, NA, NA, 3L, 3L,
NA, NA, NA, NA, NA, NA, NA, NA, 3L, 3L, 1L, NA, NA, NA, 4L, 3L,
NA, 4L, 1L, NA, 3L, 4L, 4L, NA, NA, NA, 5L, 4L, 3L, NA, NA, NA,
5L, NA, 2L, 3L, NA, 3L, NA, 3L, 4L, 3L, 2L, 3L, 3L, NA, 4L, 6L,
4L), .Label = c("Stimme nicht zu", "Stimme eher nicht zu", "Stimme teilweise zu",
"Stimme zu", "Stimme voll zu", "k. A."), class = c("ordered",
"factor")), ver?nderung_imap_digitale.l?sungen = structure(c(4L,
4L, NA, NA, 5L, 4L, 4L, 4L, NA, NA, NA, NA, NA, NA, NA, 3L, NA,
NA, NA, NA, NA, 4L, NA, NA, NA, NA, 6L, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, 5L, NA, 4L, NA, NA, NA, NA, NA, 5L, 4L, NA, NA, NA, 4L, 3L,
NA, NA, NA, NA, NA, NA, NA, NA, 1L, 3L, 4L, NA, NA, NA, 5L, 5L,
NA, 6L, 5L, NA, 4L, 4L, 4L, NA, NA, NA, 4L, 5L, 6L, NA, NA, NA,
4L, NA, 1L, 5L, NA, 4L, NA, 4L, 5L, 5L, 4L, 4L, 4L, NA, 4L, 6L,
4L), .Label = c("Stimme nicht zu", "Stimme eher nicht zu", "Stimme teilweise zu",
"Stimme zu", "Stimme voll zu", "k. A."), class = c("ordered",
"factor")), ver?nderung_imap_klarheit.prozesse = structure(c(5L,
3L, NA, NA, 4L, NA, NA, 4L, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, 4L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, 4L, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 4L, NA, NA, NA, NA, NA,
NA, 3L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, 5L, NA, NA, 5L, 5L, 3L, 4L, 4L, NA, 3L, 6L,
4L), .Label = c("Stimme nicht zu", "Stimme eher nicht zu", "Stimme teilweise zu",
"Stimme zu", "Stimme voll zu", "k. A."), class = c("ordered",
"factor")), ver?nderung_imap_weiterent.planung = structure(c(5L,
3L, NA, NA, 3L, NA, NA, 3L, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, 4L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, 5L, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 4L, NA, NA, NA, NA, NA,
NA, 3L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, 4L, NA, NA, 4L, 5L, 3L, 4L, 4L, NA, 3L, 6L,
4L), .Label = c("Stimme nicht zu", "Stimme eher nicht zu", "Stimme teilweise zu",
"Stimme zu", "Stimme voll zu", "k. A."), class = c("ordered",
"factor")), ver?nderung_imap_arbeit.relfelktieren = structure(c(4L,
3L, NA, NA, 4L, NA, NA, 4L, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, 4L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, 5L, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 5L, NA, NA, NA, NA, NA,
NA, 3L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, 4L, NA, NA, 3L, 5L, 3L, 4L, 4L, NA, 4L, 6L,
4L), .Label = c("Stimme nicht zu", "Stimme eher nicht zu", "Stimme teilweise zu",
"Stimme zu", "Stimme voll zu", "k. A."), class = c("ordered",
"factor")), ver?nderung_imap_veranstaltung.ergebnisorientiert = structure(c(6L,
4L, NA, NA, 5L, NA, NA, 3L, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, 5L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, 5L, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 5L, NA, NA, NA, NA, NA,
NA, 4L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, 5L, NA, NA, 5L, 5L, 3L, 3L, 3L, NA, 6L, 6L,
3L), .Label = c("Stimme nicht zu", "Stimme eher nicht zu", "Stimme teilweise zu",
"Stimme zu", "Stimme voll zu", "k. A."), class = c("ordered",
"factor")), ver?nderung_imap_motivation = structure(c(5L, 4L,
NA, NA, 5L, NA, NA, 4L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, 4L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, 4L, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, 5L, NA, NA, NA, NA, NA, NA,
4L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, 5L, NA, NA, 5L, 5L, 4L, 4L, 4L, NA, 3L, 6L, 4L
), .Label = c("Stimme nicht zu", "Stimme eher nicht zu", "Stimme teilweise zu",
"Stimme zu", "Stimme voll zu", "k. A."), class = c("ordered",
"factor")), ver?nderung_imap_salienz = structure(c(3L, 4L, NA,
NA, 5L, NA, NA, 2L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, 3L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, 2L, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, 4L, NA, NA, NA, NA, NA, NA, 3L,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, 4L, NA, NA, 3L, 4L, 4L, 4L, 3L, NA, 4L, 6L, 3L), .Label = c("Stimme nicht zu",
"Stimme eher nicht zu", "Stimme teilweise zu", "Stimme zu", "Stimme voll zu",
"k. A."), class = c("ordered", "factor")), ver?nderung_imap_interkult.?ffnung = structure(c(3L,
4L, NA, NA, 3L, NA, NA, 2L, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, 4L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, 2L, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 3L, NA, NA, NA, NA, NA,
NA, 3L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, 4L, NA, NA, 3L, 4L, 3L, 3L, 6L, NA, 3L, 6L,
2L), .Label = c("Stimme nicht zu", "Stimme eher nicht zu", "Stimme teilweise zu",
"Stimme zu", "Stimme voll zu", "k. A."), class = c("ordered",
"factor")), ver?nderung_imap_austausch.kommunen.verst?rkt = structure(c(4L,
4L, NA, NA, 4L, NA, NA, 4L, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, 4L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, 2L, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 5L, NA, NA, NA, NA, NA,
NA, 6L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, 3L, NA, NA, 4L, 2L, 3L, 2L, 6L, NA, 2L, 6L,
4L), .Label = c("Stimme nicht zu", "Stimme eher nicht zu", "Stimme teilweise zu",
"Stimme zu", "Stimme voll zu", "k. A."), class = c("ordered",
"factor")), ver?nderung_imap_einarbeitung = structure(c(3L, 3L,
NA, NA, 5L, NA, NA, 2L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, 4L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, 4L, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, 4L, NA, NA, NA, NA, NA, NA,
6L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, 4L, NA, NA, 4L, 1L, 1L, 2L, 1L, NA, 6L, 6L, 4L
), .Label = c("Stimme nicht zu", "Stimme eher nicht zu", "Stimme teilweise zu",
"Stimme zu", "Stimme voll zu", "k. A."), class = c("ordered",
"factor")), ver?nderung_imap_einsatz.vielfalt.verst?rkt = structure(c(3L,
4L, NA, NA, 3L, NA, NA, 3L, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, 3L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, 3L, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 3L, NA, NA, NA, NA, NA,
NA, 6L, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, 3L, NA, NA, 4L, 3L, 3L, 2L, 3L, NA, 6L, 6L,
2L), .Label = c("Stimme nicht zu", "Stimme eher nicht zu", "Stimme teilweise zu",
"Stimme zu", "Stimme voll zu", "k. A."), class = c("ordered",
"factor"))), row.names = c(NA, -114L), class = "data.frame")
uj5u.com熱心網友回復:
您只需要計算每個類別/值對的出現次數并在aes(size=)函式中使用它。您還需要計算每個值的平均值并將一秒鐘傳遞geom_point()給圖表。
library(ggplot2)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
library(tidyverse)
MD4_long <- MD4 %>%
pivot_longer(everything()) %>%
mutate(value = as.numeric(value) - 3,
value = ifelse(value == 3, NA, value)) %>%
group_by(name, value) %>%
summarise(count = n()) %>%
ungroup() %>%
group_by(name) %>%
mutate(mean = mean(value, na.rm = T)) %>%
filter(!is.na(value))
#> `summarise()` has grouped output by 'name'. You can override using the `.groups` argument.
ggplot(MD4_long, aes(x = value, y = reorder(name, value)))
geom_point(aes (size = count))
geom_point(aes (x = mean), colour = "red")
scale_y_discrete(labels = ~gsub("^.*_", "", .x))
theme_light()
scale_colour_viridis_c(aesthetics = "colour")
labs(x = NULL, y = NULL)

由reprex 包于 2022-04-25 創建 (v2.0.0 )
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/466729.html
上一篇:將基礎R圖遷移到ggplot2
