#r #ggplot2
Вопрос:
Привет, я хочу спросить, как построить парные данные, связанные с линиями в ggplot, в нескольких группах? Некоторые примеры данных для работы:
set.seed(123)
sample <- data.frame(name = c(rep("Amy",4),rep("Bob",4),rep("Jack",4)),
status = rep(c("Before","After"),6),
test = rep(c("English","English","Math","Math"),3),
score = sample(60:100,12,replace=T))
sample %>% ggplot(aes(x=test,y=score,fill=status))
geom_boxplot() geom_point(size = 2)
Идея в том, чтобы иметь test
на оси X и score
на оси Y, как показано ниже, но вместо того, коробчатой диаграммы, отдельные geom_point()
разбиты на status
группы (так что точки, которые находятся в after
группе, в пространстве, где красный коробчатой диаграммы и точек, которые расположены в before
группе в пространстве, где синий коробчатой диаграммы) с geom_line()
подключением парные данных пунктов name
. Спасибо!
Ответ №1:
Самый простой способ-сделать «статус» x-эстетичным и использовать обертку фасета для разделения тестов:
ggplot(sample, aes(x = status, y = score))
geom_boxplot(aes(fill = status), alpha = .2)
geom_line(aes(group = name))
geom_point(size = 2)
facet_wrap(~ test)
Если вам не нужны бокс-графики, вы можете переместить эстетику «группы» на первую строку.
ggplot(sample, aes(x = status, y = score, group = name))
geom_line()
geom_point(size = 2, aes(color = status))
facet_wrap(~ test, switch = "x")
scale_x_discrete("")
theme_minimal()
theme(legend.position = "top",
panel.grid = element_blank(),
axis.text.x = element_blank(),
axis.line.y = element_line(size = .5))
Комментарии:
1. Спасибо за предложение, огранка в этом случае работает, я все равно хотел бы спросить, знаете ли вы решение, которое сохраняет все на одном графике, так как в реальном наборе данных у меня на самом деле больше групп, и в идеале я бы нарисовал что-то похожее на рисунок 2E в этой публикации: nature.com/articles/s41467-019-11788-4
2. Я думаю, что это зависит от того, что вам нужно: если вы хотите создавать участки такого типа более регулярно, вы можете поискать в Google конкретный пакет для создания участков с уклоном. Если вы хотите узнать о ggplot, вы также можете изучить, как изменять темы. Вы можете использовать фасетирование с несколькими группами, и вы можете сделать фасетирование менее очевидным, создавая почти идентичный график.