Intro:Reformieren Daten eine Eichkurve mit geom_errorbar plotten() in ggplot2
ich einen Datenrahmen von Auswertungsstatistiken für Messungen unterschiedlicher Luftqualität drei habe. Die Gerätenamen lauten aa34
, aa35
und 48c
. Sie messen jeweils Kohlenmonoxid in ppm. Ich habe die Daten in einem breiten Format, wobei jeder Vektor der Mittelwert, die Standardabweichung, der Standardfehler oder das 95% -Konfidenzintervall für jedes der drei Instrumente ist.
Ich mochte diese zusammenfassenden Statistiken plotten ggplot()
und geom_errorbar()
, aber ich bin ein paar Probleme mit den Daten in langes Format bekommen und ein ID-Variable für die Farbzuordnung in ggplot()
bereitstellt. Ich folge this Tutorial. Unten ist die Figur, die ich reproduzieren möchte (die Meerschweinchenzähne werden natürlich durch giftige Dämpfe ersetzt). Ich bleibe stecken und versuche, eine zusätzliche Y-Variable hinzuzufügen, und lasse sie farblich von einer ID
Variablen koordiniert werden. Meine gewünschte Ausgabe würde den Vektor supp
aus dem Beispiel durch zwei der drei Vektoren id
ersetzen, nämlich diejenigen, die aa34
und aa35
enthalten. Mein Äquivalent zum dose
Vektor wäre , unsere x
Variable. Mein Äquivalent zum len
Vektor wäre die Vektoren aa34.co.mean
und aa35.co.mean
im langen Format.
Die Daten:
## Here's what my data frame looks like.
## I know it's ugly, but if you copy and paste it into your console it should work!
df_cal <- structure(list(ref.co.mean = c(1.23638284617457, 1.46466241535712,
2.16020882959014, 2.55054760052641, 3.13141175081258, 3.86968879644661,
6.5914211520901), ref.co.sd = c(0.0196205483139859, 0.0229279198586359,
0.0172965018302434, 0.0164690175286326, 0.00583116470707786,
0.00975072766851073, 0.0388826652553337), ref.co.se = c(0.00346845569085442,
0.00193776290206006, 0.00166435666462165, 0.00127061228762621,
0.000583116470707786, 0.00229826855196908, 0.00614788918523735
), ref.co.ci = c(0.00707396201972773, 0.00383130164529687,
0.00329939297398704,
0.0025085329371034, 0.00115702958592763, 0.00484892279298878,
0.0124352796323718), id = c("48c", "48c", "48c", "48c", "48c",
"48c", "48c"), aa34.co.mean = c(0, 0.248857142857143, 0.823777777777778,
1.256, 1.886, 2.446, 4.54), aa34.co.sd = c(0, 0.0716567783084826,
0.0660714166547489, 0.0777970497665622, 0.0518459255872629, 0,
0.0690217357069497), aa34.co.se = c(0, 0.00605610310675521,
0.0063577250318932, 0.00600217269807407, 0.00518459255872628, 0,
0.0109132946446067), aa34.co.ci = c(0, 0.0119739921598931,
0.0126034483753748, 0.0118499152368743, 0.0102873564420935, 0,
0.0220742219853317), id = c("aa34", "aa34", "aa34", "aa34", "aa34", "aa34",
"aa34"), aa35.co.mean = c(0.2915625, 0.801035714285714, 1.39911111111111,
1.80436904761905, 2.45672, 3.02355555555556, 5.134975), aa35.co.sd =
c(0.0691998633940125, 0.0474980316455754, 0.0846624379229758,
0.0822798331713915, 0.0595577165445419,
0.0178768075145867, 0.0243007072942329), aa35.co.se = c(0.0122329231657723,
0.00401431635364878, 0.00814664688751334, 0.00634802694633388,
0.00595577165445419, 0.00421360393984362, 0.00384227919014218), aa35.co.ci =
c(0.0249492112853266, 0.00793701687349159, 0.0161497773125,
0.0125327252345785, 0.0118175430765459, 0.00888992723110191,
0.00777174323014678), id = c("aa35", "aa35", "aa35", "aa35",
"aa35", "aa35", "aa35")), .Names = c("ref.co.mean", "ref.co.sd",
"ref.co.se", "ref.co.ci", "id", "aa34.co.mean", "aa34.co.sd",
"aa34.co.se", "aa34.co.ci", "id", "aa35.co.mean", "aa35.co.sd",
"aa35.co.se", "aa35.co.ci", "id"), row.names = c(1L, 33L, 173L,
281L, 449L, 549L, 567L), class = "data.frame")
Hier ist mein erster Versuch:
## This code only gets half of the job done...
## 95% Confidence Intervals for Error Bars:
p <- ggplot(df_cal, aes(x=ref.co.mean, y=aa34.co.mean)) +
theme_bw() +
geom_errorbar(aes(ymin=aa34.co.mean-aa34.co.ci,
ymax=aa34.co.mean+aa34.co.ci), width =.05) +
xlab("Reference CO (ppm)") +
ylab("AA34 CO (ppm)") +
geom_smooth(method='lm', formula = y~x, se = FALSE) +
geom_point(size=2, shape = 21, fill="White") +
geom_abline(intercept = 0, slope = 1, color, linetype=2, color = "firebrick") +
ggtitle("CO Calibration @ 0% RH") +
theme(plot.title = element_text(hjust = 0.5)) +
annotate("rect", xmin = 4.80, xmax = 5.70, ymin = 0.70, ymax = 1.70,
fill="white", colour="red") +
annotate("text", x=5.25, y=1.50, label= "R^2 == 0.994", parse=T) +
annotate("text", x=5.25, y=1.20, label= "alpha == -0.9490", parse=T) +
annotate("text", x=5.25, y=0.90, label= "beta == 0.849", parse=T)
p
Vielen Dank im Voraus!
Können Sie Ihre Frage bearbeiten, um die Ausgabe von 'dput enthalten (df_cal)' machen dies leicht reproduzierbar? –
Außerdem frage ich mich, wo Sie Ihre Zusammenfassung Statistiken berechnet haben? War es "Excel"? Dies könnte mit Hilfe der 'SummarySE' -Funktion aus dem 'Rmisc'-Paket wie in Ihrem Beispiel-Link viel einfacher gemacht werden. –
@ J.Con Danke für den 'dput()' Tipp. Es ist nicht schön, aber es scheint zu funktionieren, wenn Sie in die Konsole kopieren und einfügen. Ich verwende immer noch "R", um meine Zusammenfassungsstatistiken zu berechnen. Ich filtere manuell die "Plateaus" aus einer 7-stufigen Zeitreihe mit 'dplyr'. Ich verwende dann einige Grundfunktionen, um Vektoren der Standardabweichung, des Standardfehlers und der 95% -Konfidenzintervalle für jedes der drei Instrumente in jedem der 7 Schritte zu erzeugen. Ich mache dann eine 'row_bind()' auf jedem der 7 Kalibrierungsschritte, gefolgt von einem 'unique()', das nur eine Beobachtung pro Kalibrierungsschritt liefert. – spacedSparking