Как я могу разделить одну независимую переменную на другую, чтобы построить с помощью ggplot - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть 3 независимых переменных: лечение (4 фактора), время (5 факторов) и глубина (2 фактора). Зависимой переменной является содержание хлорофилла.

Я хочу создать ggplot с независимой переменной, разделенной на другую независимую переменную. Ниже приведены данные, которые я хочу создать в ggplot с

summarySE (data = Chloro, "ChlorophyllSq", groupvars = c ("Treatment", "Time", "Depth"), conf. интервал = 0,95)

Treatment Time Depth   N ChlorophyllSq        sd         se         ci
1          1    1     0 135      3.776070 0.6613726 0.05692189 0.11258157
2          1    1     1 135      3.672772 0.7971450 0.06860731 0.13569331
3          1    2     0 135      3.266395 0.4363715 0.03755688 0.07428097
4          1    2     1 135      3.534220 0.5394423 0.04642780 0.09182610
5          1    3     0 135      2.142180 0.7364821 0.06338629 0.12536703
6          1    3     1 135      2.891989 0.7619731 0.06558020 0.12970621
7          1    4     0 135      2.570981 0.8210501 0.07066474 0.13976255
8          1    4     1 135      3.070385 0.8550704 0.07359274 0.14555362
9          1    5     0 135      2.411373 0.8278894 0.07125337 0.14092676
10         1    5     1 135      2.946398 0.8929964 0.07685689 0.15200955
11         2    1     0 135      4.086995 0.5668885 0.04879000 0.09649811
12         2    1     1 135      3.896025 0.6010584 0.05173087 0.10231465
13         2    2     0 135      3.402854 0.7631903 0.06568496 0.12991341
14         2    2     1 135      3.497105 0.7005483 0.06029360 0.11925023
15         2    3     0 135      3.147288 0.9730928 0.08375049 0.16564388
16         2    3     1 135      3.095540 0.7554099 0.06501534 0.12858901
17         2    4     0 135      3.120613 0.8376174 0.07209063 0.14258271
18         2    4     1 135      3.053610 0.8058210 0.06935403 0.13717019
19         2    5     0 135      3.315522 0.8051983 0.06930043 0.13706418
20         2    5     1 135      3.426904 0.7516814 0.06469444 0.12795432
21         3    1     0 135      4.140426 0.5614688 0.04832354 0.09557554
22         3    1     1 135      3.934094 0.5983006 0.05149351 0.10184520
23         3    2     0 135      3.682806 0.5029370 0.04328592 0.08561201
24         3    2     1 135      3.574089 0.6450091 0.05551354 0.10979612
25         3    3     0 135      3.485060 0.5089061 0.04379966 0.08662810
26         3    3     1 135      3.075056 1.0002204 0.08608527 0.17026166
27         3    4     0 135      2.495689 0.8263094 0.07111739 0.14065781
28         3    4     1 135      2.412886 0.8524175 0.07336442 0.14510203
29         3    5     0 135      2.389609 0.9128574 0.07856626 0.15539036
30         3    5     1 134      2.309491 0.9635115 0.08323472 0.16463505
31         4    1     0 135      4.001609 0.5909523 0.05086108 0.10059435
32         4    1     1 135      3.883005 0.5027400 0.04326897 0.08557849
33         4    2     0 135      3.837514 0.4404830 0.03791074 0.07498085
34         4    2     1 135      3.917697 0.5197669 0.04473442 0.08847688
35         4    3     0 135      3.904002 0.4053248 0.03488480 0.06899606
36         4    3     1 135      3.744497 0.4603236 0.03961835 0.07835819
37         4    4     0 135      3.824684 0.3721339 0.03202819 0.06334618
38         4    4     1 135      3.827955 0.4259367 0.03665880 0.07250472
39         4    5     0 135      3.520918 0.5311997 0.04571839 0.09042301
40         4    5     1 135      3.667658 0.5253730 0.04521691 0.08943117

Пока это мой код, и он правильный, но он просто не разделяет переменную обработки по глубине. Я хотел бы знать, что мне нужно добавить в код ниже, чтобы разделить лечение по глубине. Это привело бы к 8 строкам на графике, в отличие от четырех линий, которые в настоящее время представляют лечение, а не разделены по глубине.

ggplot(graphdata1, aes(x=Time, y=ChlorophyllSq, group=Treatment,Depth))
  geom_errorbar(aes(ymin=ChlorophyllSq-se, ymax=ChlorophyllSq+se, width=.1))+
  geom_line(aes(color=Treatment))+
  geom_point(aes(colour=Treatment))

1 Ответ

0 голосов
/ 19 апреля 2020

Добро пожаловать в SE, Рейчел. Один из способов сделать это - использовать команду взаимодействия, как описано здесь: сгруппировать по двум столбцам в ggplot2 . (Поскольку приведенный ниже пример не является сбалансированным планом, не все восемь графиков go слева направо. Кроме того, я считаю, что в исходном вопросе вы имели в виду «4 уровня», а не «4 фактора», и и так далее.)

set.seed(0)
Time <- rep(1:5, 4)
Treatment <- gl(4, 10, 40, labels=letters[1:4])
Depth <- gl(2, 8, 40)

y <- sin(0.2*as.numeric(Treatment)+0.3*as.numeric(Depth)+0.75*as.numeric(Treatment)*as.numeric(Depth))+rnorm(40)/10

graphdata1 <- data.frame(y=y, Time=Time, Treatment=Treatment, Depth=Depth)

se <- 0.05

ggplot(graphdata1, aes(x=Time, y=y, group=interaction(Treatment, Depth))) + 
geom_errorbar(aes(ymin=y-se, ymax=y+se, width=.1))  + 
geom_line(aes(color=interaction(Treatment, Depth))) + 
geom_point(aes(colour=interaction(Treatment, Depth)))
...