График рассеяния для нескольких переменных на оси х - PullRequest
0 голосов
/ 02 апреля 2020

Я хочу создать точечный график для нескольких переменных, определенных в разных столбцах. пример ввода:

df=structure(list(section = structure(1:6, .Label = c("a", "b", 
"c", "d", "e", "f"), class = "factor"), level = c(0L, 1L, 2L, 
1L, 2L, 0L), math.av = c(83L, 67L, 76L, 56L, 72L, 76L), science.av = c(75L, 
76L, 82L, 72L, 82L, 68L), language.av = c(80L, 75L, 80L, 73L, 
85L, 70L)), class = "data.frame", row.names = c(NA, -6L))

Я хочу, чтобы ось x была разделена для каждого из 3 различных столбцов субъектов, а ось y представляла их различные значения.

Я должен сгруппировать их в цвета с другим столбцом в качестве индикатора, который в этом случае, в соответствии с уровнем

1 Ответ

1 голос
/ 02 апреля 2020

Вот подход с dplyr и ggplot2.

Сначала нам нужно повернуть данные, чтобы они были длинными, а не широкими.

library(dplyr)
library(tidyr)
long_df <- df %>% pivot_longer(-c(section,level))

Затем мы можем построить график точечный график.

library(ggplot2)
ggplot(long_df, aes(x=as.factor(name),y=value,fill=as.factor(level))) +
  geom_dotplot(binaxis='y') +
  labs(x="Subject") +
  guides(fill = guide_legend(title = "Level"))

enter image description here

Данные

df <- structure(list(section = structure(1:6, .Label = c("a", "b", 
"c", "d", "e", "f"), class = "factor"), level = c(0L, 1L, 2L, 
1L, 2L, 0L), math.av = c(83L, 67L, 76L, 56L, 72L, 76L), science.av = c(75L, 
76L, 82L, 72L, 82L, 68L), language.av = c(80L, 75L, 80L, 73L, 
85L, 70L)), class = "data.frame", row.names = c(NA, -6L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...