Ich möchte zwei wöchentliche gemittelte Zeitreihen (von zwei verschiedenen Datenrahmen, die verschiedene Instrumente darstellen) mit ggplot2 plotten. Das sollte einfach sein, aber ich muss etwas verpassen. Ich habe in den folgenden Beiträge angesehen:geom_point und geom_errorbar mit mehreren Datenrahmen mit ggplot2
using-both-geom-point-and-geom-line-for-multiple-x-in-ggplot2 object-not-found-error-with-ggplot2-when-adding-shape-aesthetic
und gute alte cookbook for r aber ich weiterlaufen in Fehler nach Fehler. Der Datenrahmen Ich verwende kommt aus einer Zusammenfassung ddply verwenden, und sie sind hier für die Reproduzierbarkeit:
mean_TS_Cond_use<-
structure(list(week_DOY = c(207, 207, 230, 230, 237, 237, 237,
239, 239, 239, 246, 246, 246, 253, 253, 253, 260, 267, 267, 281,
281, 281, 288, 288, 288, 295, 295, 316, 316, 323, 323, 330, 330,
330, 337, 337), Leaf.age.ordered = structure(c(1L, 4L, 1L, 3L,
1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 3L, 2L, 3L, 1L,
2L, 3L, 1L, 2L, 3L, 2L, 3L, 2L, 3L, 2L, 3L, 1L, 2L, 3L, 2L, 3L
), .Label = c("young", "mature", "old", "old1"), class = "factor"),
week_N_Cond = c(7L, 2L, 7L, 2L, 4L, 6L, 3L, 6L, 2L, 10L,
3L, 6L, 7L, 2L, 5L, 4L, 1L, 3L, 1L, 3L, 3L, 6L, 4L, 11L,
2L, 5L, 4L, 4L, 6L, 2L, 3L, 6L, 20L, 7L, 6L, 2L), week_mean_Cond = c(46.675,
28, 38.125, 59.1, 23.5333333333333, 101.5, 58.1333333333333,
16.8, 35.5, 62.4, 31.4, 144, 49.3, 49.7, 55.6333333333333,
57.65, 7.3, 4.74, NaN, 69.4, 112.3, 80.35, 47.85, 21.6416666666667,
6.41, 70.3333333333333, 59.1, 41.6, 24.9666666666667, 64.3,
NaN, 39.1, 95.8909090909091, 44.7333333333333, 20.9733333333333,
40), week_sd_Cond = c(17.6941374471885, NA, 24.1760728820874,
17.1119841047145, 18.1934970067146, 86.4448379025607, 43.4743985965687,
NA, NA, NA, NA, 1.4142135623731, 9.61665222413704, NA, 30.8034630087809,
28.0721392131059, NA, 1.40007142674936, NA, 31.5912962697006,
23.0774781984514, 20.545478010177, 5.30330085889911, 13.7910353732657,
NA, 9.97513575513302, 1.69705627484771, 5.23259018078045,
6.02522475376092, NA, NA, 9.33380951166242, 59.2789584008602,
7.7693843599949, 20.8945957925329, 33.799704140717)), .Names = c("week_DOY",
"Leaf.age.ordered", "week_N_Cond", "week_mean_Cond", "week_sd_Cond"
), row.names = c(NA, -36L), class = "data.frame")
mean_TS_Gs_use<-structure(list(week_DOY = c(232, 232, 239, 239, 246, 246, 246,
267, 267, 267, 281, 316, 316, 316, 323, 323, 330, 330, 330, 337,
337), Leaf.age.ordered = structure(c(2L, 3L, 1L, 3L, 1L, 2L,
3L, 1L, 2L, 3L, 3L, 1L, 2L, 3L, 2L, 3L, 1L, 2L, 3L, 2L, 3L), .Label = c("young",
"mature", "old"), class = "factor"), week_N_GS = c(56L, 49L,
30L, 30L, 55L, 21L, 54L, 7L, 21L, 19L, 6L, 3L, 8L, 4L, 30L, 15L,
36L, 99L, 70L, 52L, 23L), week_mean_GS = c(73.2017857142857,
170.422448979592, 88.1133333333333, 66.4866666666667, 125.794545454545,
103.247619047619, 70.0981481481481, 154.414285714286, 258.757142857143,
114.073684210526, 254.15, 167.5, 175.8125, 136.25, 87.9866666666667,
46.46, 112.455555555556, 111.778787878788, 88.4242857142857,
169.346153846154, 160.895652173913), week_sd_GS = c(27.4044421818562,
112.736252423718, 30.7610561377961, 26.4143473727146, 98.1052296302704,
59.4644819959581, 43.7727299045695, 77.6537062556456, 84.1063943551771,
67.674177268777, 79.52214157076, 47.4155037935906, 45.4656365527071,
9.46449505608548, 58.2085118395473, 17.0402800111132, 33.7885563420893,
97.9779549056591, 76.6287028293478, 130.657736481864, 93.5849467220259
)), .Names = c("week_DOY", "Leaf.age.ordered", "week_N_GS", "week_mean_GS",
"week_sd_GS"), row.names = c(NA, -21L), class = "data.frame")
Alles ist groovy für geom_point und geom_errorbar mit dem ersten Datenrahmen:
mGts<-ggplot(data=mean_TS_Cond_use, aes(x = week_DOY, y = week_mean_Cond, color=Leaf.age.ordered, ymax = week_mean_Cond + week_sd_Cond, ymin=week_mean_Cond - week_sd_Cond))+
geom_point(size=4) +
geom_errorbar()
mGts
ich das Hinzufügen versuchte, die neuen Zeitreihe aus der neuen Datenrahmen wie folgt aus:
mGts_situ<-mGts +
geom_point(aes(x = week_DOY, y = week_mean_GS, color=Leaf.age.ordered), data=mean_TS_Gs_use, size=4, shape=18) +
geom_errorbar(aes(ymax = week_mean_GS + week_sd_GS, ymin=week_mean_GS - week_sd_GS), data=mean_TS_Gs_use)
mGts_situ
Aber ich erhalte eine Fehlermeldung, dass ‚Objekt‚week_mean_Cond‘nicht gefunden.‘ Da ggplot nach einem Objekt aus dem ersten Datenrahmen suchte, versuchte ich, die geerbten aes loszuwerden und die Definition von 'data =' vor dem aes-Aufruf zu verschieben. (Ich habe auch die Fehlerbargrenzen außerhalb des ggplot-Aufrufs und anderer geringfügiger Änderungen definiert). Hier ist der neue Versuch:
Gs_upper<-mean_TS_Gs_use$week_mean_GS + mean_TS_Gs_use$week_sd_GS
Gs_lower<-mean_TS_Gs_use$week_mean_GS - mean_TS_Gs_use$week_sd_GS
mGts_situ<-mGts +
geom_point(data=mean_TS_Gs_use, inherit.aes = FALSE, aes(x = week_DOY, y = week_mean_GS, color=Leaf.age.ordered, ymax = Gs_upper, ymin = Gs_lower), size=4, shape=18) +
geom_errorbar()+
scale_x_continuous("DOY", limits = c(200, 350)) +
scale_y_continuous("Weekly Mean", limits = c(0, 345))+
theme_bw()
mGts_situ
, die keinen Fehler über alle Objekte nicht geben, aber es zeigt immer noch nicht die Fehlerbalken für den neuen Datensatz (‚mean_TS_Gs_use‘). Sie können sehen, dass die erste aufgetragen Datenrahmen (Kreise), um die Fehlerbalken hat, aber die zweite aufgetragen Datenrahmen (Dreiecke) nicht:
Aha! Danke @Gregor, das funktioniert (nachdem das Komma nach Leaf.age.ordered in den ersten AES). – user2860703