Я работаю над визуальным представлением отдельных тематических исследований.Мне нужно внести некоторые изменения в мой график в ggplot2, но я нашел это немного сложным.Вот краткое описание переменных, содержащихся в игрушечном наборе данных, который я использовал для создания воспроизводимого примера:
- Повод: Число сеансов, оценивающих поведение, оценивающих поведение (от 1 до n);
- Время: номер каждого условия (базовый уровень от 1 до n и интервал от 1 до n);
- Фаза: Состояние (A = базовый уровень или B = вмешательство);
- ID: код студента в исследовании;
- Результат: общий балл по поведенческому контрольному списку.
library(dplyr)
library(ggplot2)
db_tb <- read.table(header = TRUE, text = '
Occasion Time Phase ID outcome
1 1 A 1 15
2 2 A 1 14
3 3 A 1 8
4 4 A 1 10
5 5 A 1 14
6 6 A 1 8
7 7 A 1 10
8 1 B 1 21
9 2 B 1 23
10 3 B 1 24
11 4 B 1 20
12 5 B 1 25
13 6 B 1 15
14 7 B 1 11
15 8 B 1 23
16 9 B 1 20
17 10 B 1 NA
18 11 B 1 15
19 12 B 1 20
20 13 B 1 NA
21 14 B 1 16
1 1 A 2 18
2 2 A 2 14
3 3 A 2 18
4 4 A 2 21
5 1 B 2 8
6 2 B 2 NA
7 3 B 2 10
8 4 B 2 17
9 5 B 2 NA
10 6 B 2 29
1 1 A 3 15
2 2 A 3 7
3 3 A 3 14
4 1 B 3 15
5 2 B 3 14
6 3 B 3 11
7 4 B 3 10
8 5 B 3 NA
9 6 B 3 NA
10 7 B 3 7
11 8 B 3 9
12 9 B 3 13
13 10 B 3 11
')
Чтобы разделить базовую линию и вмешательство, я создал vlines_tb, который дает мне таблицу с номером сеанса, после которогоЯ установлю вертикальную линию в ggplot2.
#table containing the last day of the baseline phase
vlines_tb <- db_tb %>%
filter(Phase == "A") %>%
group_by(ID, Phase) %>%
summarise(y = max(Occasion))
Наконец, я создал график в соответствии с другими работами в этой области.
#create a visual representation
db_tb %>%
na.omit(outcome) %>% #Interpolate missing data so all markers within phase are connected
ggplot(aes(x = Occasion, y = outcome, group = Phase)) +
geom_point(size = 1.8) +
geom_line(size = 0.65) +
ggtitle("Baseline") +
facet_grid(ID ~ .) +
scale_x_continuous(name = "Occasions", breaks = seq(0, 70, 5)) +
scale_y_continuous(name = "Rating", limits = c(0, 30)) +
theme_classic() +
theme(strip.background = element_blank(),
axis.title.x = element_text(margin = margin(t = 20, r = 0, b = 0, l = 0)),
axis.title.y = element_text(margin = margin(t = 0, r = 20, b = 0, l = 0))) +
annotate("segment", x = -Inf, xend = Inf, y = -Inf, yend = -Inf) +
geom_vline(data = vlines_tb, aes(xintercept = y + 0.5), colour = "black", linetype = "dashed")
![enter image description here](https://i.stack.imgur.com/b3Fdw.jpg)
Однако я хотел бы внести пару изменений:
- Сортировать предметы покогда вмешательство было осуществлено так, чтобы субъектом на первом месте был тот, кто получил вмешательство первым и т. д .;и
- Перемаркируйте идентификаторы так, чтобы первый из верхних, представленных на графике, был переименован в 1 и т. д .;
- Обозначьте базовую линию и условия вмешательства в верхней части диаграммы(они должны быть выше двух соответствующих областей).
Я внес изменения в Excel, чтобы показать, как должен выглядеть окончательный результат (см. ниже).Спасибо за любую помощь!![enter image description here](https://i.stack.imgur.com/h4C6J.jpg)