library(car)
library(dplyr)
library(RcmdrMisc)
library(Rcmdr)
library(ggplot2)
library(ggpubr)
library(reshape2)1 Einleitung
1.1 Inhalt
Dieses Skript dokumentiert die zu Kapitel 6.1.2.a - Schauer (2025) gehörenden Abbildungen und Statistiken:
Kapitel 6.1.2.a.i - Nominalwerte (Referenzwerte): Berechnung der Nominalwerte der Standards NIST 2709a (für Abb. 6-3 – Skript-Kapitel 4) und SdAR-M2 (für Abb. 6-4 – Skript-Kapitel 5) sowie Abbildung des Vergleichs untereinander (Abb. 6-5 – Skript-Kapitel 6) und mit anderen Studien (Abb. 6-6 – Skript-Kapitel 7) mit Bezug auf den in dieser Arbeit definierten Grenzwert für den Variationskoeffizienten (VarK ≤ 10 %).
Kapitel 6.1.2.a.ii - l-Drift: Darstellung des l-Drifts basierend auf den Abweichungen täglicher Messungen von NIST 2709a (Kapitel 4) und SdAR-M2 (Kapitel 5) vom jeweiligen Nominalwert ausgewählter Elemente (Abb. 6-8 – Skript-Kapitel 8 und Abb. 6-9 – Skript-Kapitel 9).).
Kapitel 6.1.2.a.iii - Präzision: Berechnung der Wiederhol- und Durchlaufpräzision der Standards SdAR-M2 (für Abb. 6-11 – Skript-Kapitel 10) und NIST 2709a (für Abb. 6-12 – Skript-Kapitel 11).
Kapitel 6.1.2.a.iv - Richtigkeit: Grafische Darstellung der Richtigkeit der Standards SdAR-M2 (Abb. 6-13 – Skript-Kapitel 12) und NIST 2709a (Abb. 6-14 – Skript-Kapitel 13).
Kapitel 6.1.2.a.v - Standardkontrolle: Grafische Darstellung der täglichen Kontrolle der Messwerte der Standards SdAR-M2 und NIST 2709a (Abb. 6-15 – Skript-Kapitel 14).
1.2 Praktische Hinweise
1.2.1 Einführende Literatur
Um mit dem bereitgestellten R-Skript arbeiten zu können, werden die wichtigsten praktischen Schritte, die für den Einstieg erforderlich sind, kurz erklärt. Dies ersetzt jedoch nicht das Studium des Programms selbst und der Inhalte der Skripte.
Siegmund (2020) wird als Grundlage in deutscher Sprache empfohlen, als Einführung in das R-Plugin Quarto seine Anleitung Siegmund (2023). Auf Englisch ist die R Quarto-Website besonders zu empfehlen.
Field, A. u. a. (2013) ist lesenswert, unterhaltsam und enthält alle relevanten Informationen für den Einstieg. Das R Core Team bietet eine regelmäßig aktualisierte Einführung an; die aktuelle Version ist hier zu finden.
1.2.2 R, R Studio und R Quarto
R, auch R Console oder RGUI, ist das „reine“ R, d. h. es arbeitet ausschließlich mit Code. RStudio hingegen verfügt über eine Benutzeroberfläche und greift auf R zu.
Dieses R-Skript wurde in RStudio in Verbindung mit Quarto erstellt – einer R-spezifischen Schreibumgebung, die die Handhabung von Code sowohl bei der Entwicklung als auch bei der Veröffentlichung erheblich vereinfacht. Quarto ermöglicht es, einzelne R-Skripte in Form von Quarto-Dateien (.qmd) zu erstellen und in verschiedene andere Formate (.html, .pdf) zu exportieren. Neben dem „reinen“ R-Code können auch zusätzliche Informationen zu den Code-Modulen bereitgestellt werden.
Quarto-Dokumente enthalten ausführbaren R-Code, d. h. sie wurden entwickelt und umfangreich getestet, um die gewünschten Berechnungen fehlerfrei durchzuführen. Werden die Quarto-Dateien in RStudio geöffnet, sind die Code-Blöcke grau hinterlegt und können automatisch ausgeführt werden. Weitere Informationen zu Quarto und Quarto-Code finden sich hier.
Um mit diesem Skript zu arbeiten, wird empfohlen, R und RStudio, sowie R Quarto zu installieren.
1.2.3 R Projekte
Um sicherzustellen, dass die Berechnungen reibungslos ablaufen, wurde das Skript in ein R-Projekt eingebettet. Die R-Projektdatei (.Rproj) befindet sich im übergeordneten Ordner der Berechnungen und kann durch Doppelklicken geöffnet werden. Der Dateipfad wird über die Position dieser Datei definiert, sodass das gesamte Projekt beliebig gespeichert werden kann – vorausgesetzt, die Daten befinden sich in den vorgegebenen Ordnern. Die einzige Voraussetzung ist, dass der unter Kapitel 3 hinterlegte Code-Schnipsel beim ersten Arbeiten mit diesem Skript ausgeführt wird.
Ein weiterer Vorteil von R-Projekten ist, dass alle Quarto-Dateien, die beim letzten Schließen geöffnet waren, direkt beim Öffnen des Projekts wieder geladen werden – es muss also nicht manuell nach der Dateistruktur gesucht werden.
1.2.4 R Pakete
R-Pakete müssen zunächst installiert und anschließend in jeder Sitzung erneut geladen werden siehe auch 2, um die Berechnungen auszuführen. Sie enthalten Funktionen, die für bestimmte Analysen erforderlich sind. Zum Installieren kann der folgende Code verwendet werden:
- install.packages(“Paket-Name”)
Die Pakete werden mit folgendem Befehl geladen:
- library(Paket-Name)
Eine kurze Einführung in grundlegende R-Befehle findet sich beispielsweise auch hier.
1.3 Skript & Packages
Dieses Quarto-Skript (R Quarto v. 1.5.55) (Allaire u. a. 2024) wurde mit R v. 4.4.1 (R Core Team 2024) und RStudio v. 2024.04.2 (RStudio Team 2024) erstellt. Es werden folgende R-Pakete verwendet:
- car (Fox/Weisberg 2019)
- dplyr (Wickham 2023)
- ggplot2 (Wickham 2016)
- ggpubr (Kassambara 2023)
- Rcmdr (Fox u. a. 2024)
- RcmdrMisc (Fox/Marquez 2023)
- reshape2 (Wickham 2007)
Vor Beginn der Analysen müssen sowohl alle Pakete (siehe Kapitel 2) geladen als auch das Working Directory gesetzt werden (siehe Kapitel 3).
Der Code ist lauffähig, d. h. er kann fehlerfrei ausgeführt werden, sofern die vorgegebene Datenstruktur beibehalten wird.
In jedem Code-Block wird der Code zur Erstellung der jeweils ersten Abbildung erläutert – nachfolgende Grafiken mit vergleichbarem Code erhalten keine eigene Beschreibung.
1.4 Gerät und Messparameter
Die Messdaten wurden mit dem Niton XL3t (Nr. 97390) des Departments für Kulturwissenschaften der Universität München im TestAllGeo-Modus ermittelt (60 Sekunden Standard, Niedrig, Hoch sowie 120 Sekunden Leicht-Modus) und mit einem 8 mm Messspot von M. Schauer durchgeführt. Die Messungen fanden von September bis Dezember 2018 sowie von September 2019 bis Juli 2020 statt. Weitere Informationen finden sich in Kapitel 6.1.1 – Schauer (2025).
2 Packages
3 Working directory
knitr::opts_knit$set(root.dir = "./")4 Abb. 6-3 - Statistik
4.1 Berechnen der Kennwwerte
# Daten einlesen
data1<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Nominal_SdAR-M2_Daten.csv")
# Ausschluss nicht relevanter Spalten
data<- data1[, -c(1:4)]
# Definition der Formeln Variationskoeffizient, statistischen Fehler, Ober- und Untergrenze
Varkoef <- function(x){(sd(x)/mean(x))*100}
StatF<-function(x){(sd(x)/sqrt(11))}
OG<-function(x){(mean(x)+sd(x))}
UG<-function(x){(mean(x)-sd(x))}
# Berechnung der Kennzahlen für die ausgewählten Spalten
NominalSdARM2<-(data)%>%summarize_all(list(MW=mean,Sd=sd,StatF=StatF,
Varkoef=Varkoef,OG=OG,UG=UG,MD=median))4.2 Zusammenstellen und Exportieren der Daten
# Definieren des Dataframes der die Elementbezeichnungen enthält
Element<-c("Si","Ti","Al","Fe","Mn","Mg","Ca","K","P","S","Cl","V","Cr","Ni",
"Cu","Zn","As","Se","Rb","Sr","Y","Zr","Nb","Mo","Ag","Sn","Sb","Cs","Ba",
"La","Pb","Th","Bal")
# Einfügen des Präfix "_" in den Spaltennamen
cleanColumnNames <- function(df, prefix) {
colnames(df) <- gsub(paste0(prefix, "_"), "", colnames(df))
return(df)
}
Tab_1 <- rbind( # Kombinieren mehrerer Dataframes
NominalSdARM2 %>% select(Si_MW, Si_MD, Si_Sd, Si_StatF, Si_Varkoef, Si_OG, Si_UG, # Auswahl relevanter Spalten
Si_Error_MW, Si_Error_MD, Si_Error_Sd) %>% cleanColumnNames("Si"), # Entfernen des Elementnames (z.B. "Si") aus den Spaltennamen
NominalSdARM2 %>% select(Ti_MW, Ti_MD, Ti_Sd, Ti_StatF, Ti_Varkoef, Ti_OG, Ti_UG,
Ti_Error_MW, Ti_Error_MD, Ti_Error_Sd) %>% cleanColumnNames("Ti"),
NominalSdARM2 %>% select(Al_MW, Al_MD, Al_Sd, Al_StatF, Al_Varkoef, Al_OG, Al_UG,
Al_Error_MW, Al_Error_MD, Al_Error_Sd) %>% cleanColumnNames("Al"),
NominalSdARM2 %>% select(Fe_MW, Fe_MD, Fe_Sd, Fe_StatF, Fe_Varkoef, Fe_OG, Fe_UG,
Fe_Error_MW, Fe_Error_MD, Fe_Error_Sd) %>% cleanColumnNames("Fe"),
NominalSdARM2 %>% select(Mn_MW, Mn_MD, Mn_Sd, Mn_StatF, Mn_Varkoef, Mn_OG, Mn_UG,
Mn_Error_MW, Mn_Error_MD, Mn_Error_Sd) %>% cleanColumnNames("Mn"),
NominalSdARM2 %>% select(Mg_MW, Mg_MD, Mg_Sd, Mg_StatF, Mg_Varkoef, Mg_OG, Mg_UG,
Mg_Error_MW, Mg_Error_MD, Mg_Error_Sd) %>% cleanColumnNames("Mg"),
NominalSdARM2 %>% select(Ca_MW, Ca_MD, Ca_Sd, Ca_StatF, Ca_Varkoef, Ca_OG, Ca_UG,
Ca_Error_MW, Ca_Error_MD, Ca_Error_Sd) %>% cleanColumnNames("Ca"),
NominalSdARM2 %>% select(K_MW, K_MD, K_Sd, K_StatF, K_Varkoef, K_OG, K_UG,
K_Error_MW, K_Error_MD, K_Error_Sd) %>% cleanColumnNames("K"),
NominalSdARM2 %>% select(P_MW, P_MD, P_Sd, P_StatF, P_Varkoef, P_OG, P_UG,
P_Error_MW, P_Error_MD, P_Error_Sd) %>% cleanColumnNames("P"))
Cl <- NominalSdARM2 %>% select(Cl_MW, Cl_MD, Cl_Sd, Cl_StatF, Cl_Varkoef, Cl_OG,
Cl_UG, Cl_Error_MW, Cl_Error_MD, Cl_Error_Sd) %>% cleanColumnNames("Cl")
S<-NominalSdARM2 %>% select(S_MW, S_MD, S_Sd, S_StatF, S_Varkoef, S_OG, S_UG,
S_Error_MW, S_Error_MD, S_Error_Sd)
colClean <- function(x){ colnames(x) <- gsub("S_", "", colnames(x)); x }
S <- colClean(S)
V<-NominalSdARM2 %>% select(V_MW, V_MD, V_Sd, V_StatF, V_Varkoef, V_OG, V_UG,
V_Error_MW, V_Error_MD, V_Error_Sd)
colClean <- function(x){ colnames(x) <- gsub("V_", "", colnames(x)); x }
V <- colClean(V)
Tab_2 <- rbind(
NominalSdARM2 %>% select(Cr_MW, Cr_MD, Cr_Sd, Cr_StatF, Cr_Varkoef, Cr_OG, Cr_UG,
Cr_Error_MW, Cr_Error_MD, Cr_Error_Sd) %>% cleanColumnNames("Cr"),
NominalSdARM2 %>% select(Ni_MW, Ni_MD, Ni_Sd, Ni_StatF, Ni_Varkoef, Ni_OG, Ni_UG,
Ni_Error_MW, Ni_Error_MD, Ni_Error_Sd) %>% cleanColumnNames("Ni"),
NominalSdARM2 %>% select(Cu_MW, Cu_MD, Cu_Sd, Cu_StatF, Cu_Varkoef, Cu_OG, Cu_UG,
Cu_Error_MW, Cu_Error_MD, Cu_Error_Sd) %>% cleanColumnNames("Cu"),
NominalSdARM2 %>% select(Zn_MW, Zn_MD, Zn_Sd, Zn_StatF, Zn_Varkoef, Zn_OG, Zn_UG,
Zn_Error_MW, Zn_Error_MD, Zn_Error_Sd) %>% cleanColumnNames("Zn"),
NominalSdARM2 %>% select(As_MW, As_MD, As_Sd, As_StatF, As_Varkoef, As_OG, As_UG,
As_Error_MW, As_Error_MD, As_Error_Sd) %>% cleanColumnNames("As"),
NominalSdARM2 %>% select(Se_MW, Se_MD, Se_Sd, Se_StatF, Se_Varkoef, Se_OG, Se_UG,
Se_Error_MW, Se_Error_MD, Se_Error_Sd) %>% cleanColumnNames("Se"),
NominalSdARM2 %>% select(Rb_MW, Rb_MD, Rb_Sd, Rb_StatF, Rb_Varkoef, Rb_OG, Rb_UG,
Rb_Error_MW, Rb_Error_MD, Rb_Error_Sd) %>% cleanColumnNames("Rb"),
NominalSdARM2 %>% select(Sr_MW, Sr_MD, Sr_Sd, Sr_StatF, Sr_Varkoef, Sr_OG, Sr_UG,
Sr_Error_MW, Sr_Error_MD, Sr_Error_Sd) %>% cleanColumnNames("Sr"),
NominalSdARM2 %>% select(Y_MW, Y_MD, Y_Sd, Y_StatF, Y_Varkoef, Y_OG, Y_UG, Y_Error_MW,
Y_Error_MD, Y_Error_Sd) %>% cleanColumnNames("Y"),
NominalSdARM2 %>% select(Zr_MW, Zr_MD, Zr_Sd, Zr_StatF, Zr_Varkoef, Zr_OG, Zr_UG,
Zr_Error_MW, Zr_Error_MD, Zr_Error_Sd) %>% cleanColumnNames("Zr"),
NominalSdARM2 %>% select(Nb_MW, Nb_MD, Nb_Sd, Nb_StatF, Nb_Varkoef, Nb_OG, Nb_UG,
Nb_Error_MW, Nb_Error_MD, Nb_Error_Sd) %>% cleanColumnNames("Nb"),
NominalSdARM2 %>% select(Mo_MW, Mo_MD, Mo_Sd, Mo_StatF, Mo_Varkoef, Mo_OG, Mo_UG,
Mo_Error_MW, Mo_Error_MD, Mo_Error_Sd) %>% cleanColumnNames("Mo"),
NominalSdARM2 %>% select(Ag_MW, Ag_MD, Ag_Sd, Ag_StatF, Ag_Varkoef, Ag_OG, Ag_UG,
Ag_Error_MW, Ag_Error_MD, Ag_Error_Sd) %>% cleanColumnNames("Ag"),
NominalSdARM2 %>% select(Sn_MW, Sn_MD, Sn_Sd, Sn_StatF, Sn_Varkoef, Sn_OG, Sn_UG,
Sn_Error_MW, Sn_Error_MD, Sn_Error_Sd) %>% cleanColumnNames("Sn"),
NominalSdARM2 %>% select(Sb_MW, Sb_MD, Sb_Sd, Sb_StatF, Sb_Varkoef, Sb_OG, Sb_UG,
Sb_Error_MW, Sb_Error_MD, Sb_Error_Sd) %>% cleanColumnNames("Sb"),
NominalSdARM2 %>% select(Cs_MW, Cs_MD, Cs_Sd, Cs_StatF, Cs_Varkoef, Cs_OG, Cs_UG,
Cs_Error_MW, Cs_Error_MD, Cs_Error_Sd) %>% cleanColumnNames("Cs"),
NominalSdARM2 %>% select(Ba_MW, Ba_MD, Ba_Sd, Ba_StatF, Ba_Varkoef, Ba_OG, Ba_UG,
Ba_Error_MW, Ba_Error_MD, Ba_Error_Sd) %>% cleanColumnNames("Ba"),
NominalSdARM2 %>% select(La_MW, La_MD, La_Sd, La_StatF, La_Varkoef, La_OG, La_UG,
La_Error_MW, La_Error_MD, La_Error_Sd) %>% cleanColumnNames("La"),
NominalSdARM2 %>% select(Pb_MW, Pb_MD, Pb_Sd, Pb_StatF, Pb_Varkoef, Pb_OG, Pb_UG,
Pb_Error_MW, Pb_Error_MD, Pb_Error_Sd) %>% cleanColumnNames("Pb"),
NominalSdARM2 %>% select(Th_MW, Th_MD, Th_Sd, Th_StatF, Th_Varkoef, Th_OG, Th_UG,
Th_Error_MW, Th_Error_MD, Th_Error_Sd) %>% cleanColumnNames("Th"),
NominalSdARM2 %>% select(Bal_MW, Bal_MD, Bal_Sd, Bal_StatF, Bal_Varkoef, Bal_OG,
Bal_UG, Bal_Error_MW, Bal_Error_MD, Bal_Error_Sd)%>% cleanColumnNames("Bal")
)
# Kombinieren mehrerer Dataframes
Tab3 <- rbind(Tab_1,Cl,S,V,Tab_2)
# Aneinanderreihen mehrerer Dataframes
Tab4<- cbind(Element,Tab3)
# Runden ausgewählter Spalten auf glatte Zahlen
Tab4[, c(2:5, 7:11)] <- round(Tab4[, c(2:5, 7:11)])
# Runden des Variationskoeffizienten auf 2 Dezimalstellen
Tab4$Varkoef<-round(Tab4$Varkoef,2)
# Speichern als CSV
write.csv(Tab4,"../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//NominalSdARM2.csv",row.names=FALSE)5 Abb. 6-4 - Statistik
5.1 Berechnen der Kennwwerte
# Daten einlesen
data1<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Nominal_2709a_Daten.csv")
# Ausschluss nicht relevanter Spalten
data<- data1[, -c(1:4)]
# Definition der Formeln Variationskoeffizient, statistischen Fehler, Ober- und Untergrenze
Varkoef <- function(x){(sd(x)/mean(x))*100}
StatF<-function(x){(sd(x)/sqrt(11))}
OG<-function(x){(mean(x)+sd(x))}
UG<-function(x){(mean(x)-sd(x))}
# Berechnung der Kennzahlen für die ausgewählten Spalten
NominalSdARM2<-(data)%>%summarize_all(list(MW=mean,Sd=sd,StatF=StatF,
Varkoef=Varkoef,OG=OG,UG=UG,MD=median))5.2 Zusammenstellen und Exportieren der Daten
# Auswahl der Variablen
Element<-c("Si","Ti","Al","Fe","Mn","Mg","Ca","K","P","S","Cl","V","Cr","Ni",
"Cu","Zn","As","Se","Rb","Sr","Y","Zr","Nb","Mo","Ag","Sn","Sb",
"Cs","Ba","La","Ce","Pb","Th","Bal")
# Einfügen des Präfix "_" in den Spaltennamen
cleanColumnNames <- function(df, prefix) {
colnames(df) <- gsub(paste0(prefix, "_"), "", colnames(df))
return(df)
}
Tab_1 <- rbind(# Kombinieren mehrerer Dataframes
NominalSdARM2 %>% select(Si_MW, Si_MD, Si_Sd, Si_StatF, Si_Varkoef, Si_OG, Si_UG, # Auswahl relevanter Spalten
Si_Error_MW, Si_Error_MD, Si_Error_Sd) %>% cleanColumnNames("Si"), # Entfernen des Elementnames (z.B. "Si") aus den Spaltennamen
NominalSdARM2 %>% select(Ti_MW, Ti_MD, Ti_Sd, Ti_StatF, Ti_Varkoef, Ti_OG, Ti_UG,
Ti_Error_MW, Ti_Error_MD, Ti_Error_Sd) %>% cleanColumnNames("Ti"),
NominalSdARM2 %>% select(Al_MW, Al_MD, Al_Sd, Al_StatF, Al_Varkoef, Al_OG, Al_UG,
Al_Error_MW, Al_Error_MD, Al_Error_Sd) %>% cleanColumnNames("Al"),
NominalSdARM2 %>% select(Fe_MW, Fe_MD, Fe_Sd, Fe_StatF, Fe_Varkoef, Fe_OG, Fe_UG,
Fe_Error_MW, Fe_Error_MD, Fe_Error_Sd) %>% cleanColumnNames("Fe"),
NominalSdARM2 %>% select(Mn_MW, Mn_MD, Mn_Sd, Mn_StatF, Mn_Varkoef, Mn_OG, Mn_UG,
Mn_Error_MW, Mn_Error_MD, Mn_Error_Sd) %>% cleanColumnNames("Mn"),
NominalSdARM2 %>% select(Mg_MW, Mg_MD, Mg_Sd, Mg_StatF, Mg_Varkoef, Mg_OG, Mg_UG,
Mg_Error_MW, Mg_Error_MD, Mg_Error_Sd) %>% cleanColumnNames("Mg"),
NominalSdARM2 %>% select(Ca_MW, Ca_MD, Ca_Sd, Ca_StatF, Ca_Varkoef, Ca_OG, Ca_UG,
Ca_Error_MW, Ca_Error_MD, Ca_Error_Sd) %>% cleanColumnNames("Ca"),
NominalSdARM2 %>% select(K_MW, K_MD, K_Sd, K_StatF, K_Varkoef, K_OG, K_UG,
K_Error_MW, K_Error_MD, K_Error_Sd) %>% cleanColumnNames("K"),
NominalSdARM2 %>% select(P_MW, P_MD, P_Sd, P_StatF, P_Varkoef, P_OG, P_UG,
P_Error_MW, P_Error_MD, P_Error_Sd) %>% cleanColumnNames("P"))
Cl <- NominalSdARM2 %>% select(Cl_MW, Cl_MD, Cl_Sd, Cl_StatF, Cl_Varkoef, Cl_OG,
Cl_UG, Cl_Error_MW, Cl_Error_MD, Cl_Error_Sd) %>% cleanColumnNames("Cl")
S<-NominalSdARM2 %>% select(S_MW, S_MD, S_Sd, S_StatF, S_Varkoef, S_OG, S_UG,
S_Error_MW, S_Error_MD, S_Error_Sd)
colClean <- function(x){ colnames(x) <- gsub("S_", "", colnames(x)); x }
S <- colClean(S)
V<-NominalSdARM2 %>% select(V_MW, V_MD, V_Sd, V_StatF, V_Varkoef, V_OG, V_UG,
V_Error_MW, V_Error_MD, V_Error_Sd)
colClean <- function(x){ colnames(x) <- gsub("V_", "", colnames(x)); x }
V <- colClean(V)
Tab_2 <- rbind(
NominalSdARM2 %>% select(Cr_MW, Cr_MD, Cr_Sd, Cr_StatF, Cr_Varkoef, Cr_OG, Cr_UG,
Cr_Error_MW, Cr_Error_MD, Cr_Error_Sd) %>% cleanColumnNames("Cr"),
NominalSdARM2 %>% select(Ni_MW, Ni_MD, Ni_Sd, Ni_StatF, Ni_Varkoef, Ni_OG, Ni_UG,
Ni_Error_MW, Ni_Error_MD, Ni_Error_Sd) %>% cleanColumnNames("Ni"),
NominalSdARM2 %>% select(Cu_MW, Cu_MD, Cu_Sd, Cu_StatF, Cu_Varkoef, Cu_OG, Cu_UG,
Cu_Error_MW, Cu_Error_MD, Cu_Error_Sd) %>% cleanColumnNames("Cu"),
NominalSdARM2 %>% select(Zn_MW, Zn_MD, Zn_Sd, Zn_StatF, Zn_Varkoef, Zn_OG, Zn_UG,
Zn_Error_MW, Zn_Error_MD, Zn_Error_Sd) %>% cleanColumnNames("Zn"),
NominalSdARM2 %>% select(As_MW, As_MD, As_Sd, As_StatF, As_Varkoef, As_OG, As_UG,
As_Error_MW, As_Error_MD, As_Error_Sd) %>% cleanColumnNames("As"),
NominalSdARM2 %>% select(Se_MW, Se_MD, Se_Sd, Se_StatF, Se_Varkoef, Se_OG, Se_UG,
Se_Error_MW, Se_Error_MD, Se_Error_Sd) %>% cleanColumnNames("Se"),
NominalSdARM2 %>% select(Rb_MW, Rb_MD, Rb_Sd, Rb_StatF, Rb_Varkoef, Rb_OG, Rb_UG,
Rb_Error_MW, Rb_Error_MD, Rb_Error_Sd) %>% cleanColumnNames("Rb"),
NominalSdARM2 %>% select(Sr_MW, Sr_MD, Sr_Sd, Sr_StatF, Sr_Varkoef, Sr_OG, Sr_UG,
Sr_Error_MW, Sr_Error_MD, Sr_Error_Sd) %>% cleanColumnNames("Sr"),
NominalSdARM2 %>% select(Y_MW, Y_MD, Y_Sd, Y_StatF, Y_Varkoef, Y_OG, Y_UG,
Y_Error_MW, Y_Error_MD, Y_Error_Sd) %>% cleanColumnNames("Y"),
NominalSdARM2 %>% select(Zr_MW, Zr_MD, Zr_Sd, Zr_StatF, Zr_Varkoef, Zr_OG, Zr_UG,
Zr_Error_MW, Zr_Error_MD, Zr_Error_Sd) %>% cleanColumnNames("Zr"),
NominalSdARM2 %>% select(Nb_MW, Nb_MD, Nb_Sd, Nb_StatF, Nb_Varkoef, Nb_OG, Nb_UG,
Nb_Error_MW, Nb_Error_MD, Nb_Error_Sd) %>% cleanColumnNames("Nb"),
NominalSdARM2 %>% select(Mo_MW, Mo_MD, Mo_Sd, Mo_StatF, Mo_Varkoef, Mo_OG, Mo_UG,
Mo_Error_MW, Mo_Error_MD, Mo_Error_Sd) %>% cleanColumnNames("Mo"),
NominalSdARM2 %>% select(Ag_MW, Ag_MD, Ag_Sd, Ag_StatF, Ag_Varkoef, Ag_OG, Ag_UG,
Ag_Error_MW, Ag_Error_MD, Ag_Error_Sd) %>% cleanColumnNames("Ag"),
NominalSdARM2 %>% select(Sn_MW, Sn_MD, Sn_Sd, Sn_StatF, Sn_Varkoef, Sn_OG, Sn_UG,
Sn_Error_MW, Sn_Error_MD, Sn_Error_Sd) %>% cleanColumnNames("Sn"),
NominalSdARM2 %>% select(Sb_MW, Sb_MD, Sb_Sd, Sb_StatF, Sb_Varkoef, Sb_OG, Sb_UG,
Sb_Error_MW, Sb_Error_MD, Sb_Error_Sd) %>% cleanColumnNames("Sb"),
NominalSdARM2 %>% select(Cs_MW, Cs_MD, Cs_Sd, Cs_StatF, Cs_Varkoef, Cs_OG, Cs_UG,
Cs_Error_MW, Cs_Error_MD, Cs_Error_Sd) %>% cleanColumnNames("Cs"),
NominalSdARM2 %>% select(Ba_MW, Ba_MD, Ba_Sd, Ba_StatF, Ba_Varkoef, Ba_OG, Ba_UG,
Ba_Error_MW, Ba_Error_MD, Ba_Error_Sd) %>% cleanColumnNames("Ba"),
NominalSdARM2 %>% select(La_MW, La_MD, La_Sd, La_StatF, La_Varkoef, La_OG, La_UG,
La_Error_MW, La_Error_MD, La_Error_Sd) %>% cleanColumnNames("La"),
NominalSdARM2 %>% select(Ce_MW, Ce_MD, Ce_Sd, Ce_StatF, Ce_Varkoef, Ce_OG, Ce_UG,
Ce_Error_MW, Ce_Error_MD, Ce_Error_Sd) %>% cleanColumnNames("Ce"),
NominalSdARM2 %>% select(Pb_MW, Pb_MD, Pb_Sd, Pb_StatF, Pb_Varkoef, Pb_OG, Pb_UG,
Pb_Error_MW, Pb_Error_MD, Pb_Error_Sd) %>% cleanColumnNames("Pb"),
NominalSdARM2 %>% select(Th_MW, Th_MD, Th_Sd, Th_StatF, Th_Varkoef, Th_OG, Th_UG,
Th_Error_MW, Th_Error_MD, Th_Error_Sd) %>% cleanColumnNames("Th"),
NominalSdARM2 %>% select(Bal_MW, Bal_MD, Bal_Sd, Bal_StatF, Bal_Varkoef, Bal_OG,
Bal_UG, Bal_Error_MW, Bal_Error_MD, Bal_Error_Sd) %>% cleanColumnNames("Bal")
)
# Kombinieren mehrerer Dataframes
Tab3 <- rbind(Tab_1,Cl,S,V,Tab_2)
# Aneinanderreihen mehrerer Dataframes
Tab4<- cbind(Element,Tab3)
# Runden ausgewählter Spalten auf glatte Zahlen
Tab4[, c(2:5, 7:11)] <- round(Tab4[, c(2:5, 7:11)])
# Runden des Variationskoeffizienten auf 2 Dezimalstellen
Tab4$Varkoef<-round(Tab4$Varkoef,2)
# Speichern als CSV
write.csv(Tab4,"../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Nominal2709a.csv",
row.names=FALSE)6 Abb. 6-5
6.1 Berechnungen durchführen
# Daten einlesen
data1<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Nominal_2709a_Daten.csv")
data2<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Nominal_SdAR-M2_Daten.csv")
# Auswahl der gewünschten Spalten
data<-select(data1,"Si","Ti","Al","Fe","Mn","Ca","K","P","S","Cl","V","Cr","Ni","Cu","Zn","Rb","Sr","Y","Zr","Nb","Cs","Ba","La","Pb","Th","Bal")
data3<-select(data2,"Si","Ti","Al","Fe","Mn","Ca","K","P","S","Cl","V","Cr","Ni","Cu","Zn","Rb","Sr","Y","Zr","Nb","Cs","Ba","La","Pb","Th","Bal")
# Definition der Formeln des Variationskoeffizient
Varkoef <- function(x){(sd(x)/mean(x))*100}
# Berechnung der Variationskoeffizienten
Varkoef_2709a<-(data)%>%summarize_all(list(Varkoef=Varkoef))
Varkoef_SdARM2<-(data3)%>%summarize_all(list(Varkoef=Varkoef))
# Kombinieren mehrerer Dataframes
Varkoef_AlleSt<- rbind(Varkoef_SdARM2,Varkoef_2709a)
# Hinzufügen der Probennummern als eigene Spalte
Varkoef_AlleSt$Probennummer<-c("SdAR-M2","2709a")
# Entfernen von "_Varkoef" aus den Spaltennamen
colnames(Varkoef_AlleSt) <- gsub("_Varkoef", "", colnames(Varkoef_AlleSt))6.2 Tabelle transformieren
# Transformieren in "long format"
d <- melt(Varkoef_AlleSt, id.vars="Probennummer")6.3 Abb. erstellen
# Diagramm erstellen
ggplot(d, aes(x = variable, y = value, colour = Probennummer, group=Probennummer)) +
geom_line(size = 0.25) + # Hinzufügen von Verbindungslinien
scale_color_hue(direction = 1) + # Manuelle Definition des Farbverlaufs
theme_classic()+ # Klassisches Design
geom_point(aes(color=Probennummer))+ scale_color_grey()+ # Manuelle Definition der Spalte der Farbkategorisierung
xlab("Chemische Elemente")+ ylab("Varkoef. in %") + # Manuelle Achsenbeschriftung
scale_y_continuous(breaks=seq(0,20,2), expand=c(0,0), limits=c(0,14))+ # Manuelle Definition der Y-Achse
theme(axis.line=element_line(colour="black",size=0.25)) +
theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
theme(legend.position="bottom") +
theme(axis.ticks=element_line(size=0.25,colour="black"))+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+ # Achsentext rotieren
geom_hline(yintercept=10, color = "black",size=0.25) # Horizontale Markierung des Grenzwerts# Export des Diagramms
ggsave("Abb.6-5.eps",path=("../Daten//Kap_6//Kap_6.1//Abbildungen"),
plot=last_plot(),device="eps",height=6,width=11.25,unit=c("cm"),dpi=1200)7 Abb. 6-6
Achtung, die folgenden Berechnungen bauen auf jenen für Abb. 6-5 auf. D.h. diese müssen zuerst ausgeführt werden.
7.1 Zusammenstellen der Daten
# Auswahl der gewünschten Spalten
data3<-select(Varkoef_AlleSt,"Probennummer","Si","Ti","Al","Fe","Mn","Ca","K","P","V","Cu","Zn","Rb","Sr","Y","Zr","Nb","Ba","Pb","Th")
# Daten einlesen
Eslami<-read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Datengrundlage//Eslami_u.a._2020.csv")
# Kombinieren mehrerer Dataframes
Varkoef_AlleSt_Eslami<- rbind(data3,Eslami)7.2 Tabelle transformieren
# Transformieren in "long format"
e <- melt(Varkoef_AlleSt_Eslami, id.vars="Probennummer")7.3 Abb. erstellen
# Diagramm erstellen
ggplot(e, aes(x = variable, y = value, colour = Probennummer, group=Probennummer)) +
geom_line(size = 0.25) + # Hinzufügen von Verbindungslinien
scale_color_hue(direction = 1) + # Manuelle Definition des Farbverlaufs
theme_classic()+ # Klassisches Design
geom_point(aes(color=Probennummer))+ scale_color_grey()+ # Manuelle Definition der Spalte der Farbkategorisierung
xlab("Chemische Elemente")+ ylab("Varkoef. in %") + # Manuelle Achsenbeschriftung
scale_y_continuous(breaks=seq(0,22,2), expand=c(0,0), limits=c(0,22.5))+ # Manuelle Definition der Y-Achse
theme(axis.line=element_line(colour="black",size=0.25)) +
theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
theme(legend.position="bottom") +
theme(axis.ticks=element_line(size=0.25,colour="black"))+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))+ # Achsentext rotieren
geom_hline(yintercept=10, color = "black",size=0.25) # Horizontale Markierung des Grenzwerts# Export des Diagramms
ggsave("Abb.6-6.eps",path=("../Daten//Kap_6//Kap_6.1//Abbildungen"),
plot=last_plot(),device="eps",height=6,width=11.25,unit=c("cm"),dpi=1200)8 Abb. 6-8
Achtung! Bevor die .csv geladen wird in Excel das Datumsformat richtig einstellen damit es als aufsteigende, nummerische Variable wahrgenommen wird (als Datum gibts sonst ungleiche Abstände was ich hier nicht möchte): Spalte markieren, Format, Gebietsschema Englisch (Großbritannien) und Format 2001-03-14 auswählen
# Daten einlesen
data<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//lDrift_NitonXL3t.csv")
# Diagramm erstellen
data %>%
filter(Element %in% c("Al", "Si","K")) %>% # Auswahl der gewünschten Elemente
ggplot(size = 2) + # Manuelle Definition der Symbolgröße
aes(x = Time, y = ProzAbw, colour = Element) +
geom_line(size = 0.25) + # Hinzufügen von Verbindungslinien
scale_color_hue(direction = 1) + # Manuelle Definition des Farbverlaufs
theme_classic()+ # Klassisches Design
geom_point(aes(color=Element))+scale_color_grey()+ # Manuelle Definition der Spalte der Farbkategorisierung
geom_hline(yintercept=0, color = "red",size=0.25)+ # Horizontale Markierung des Null-Werts
xlab("Probennahme in Monat und Jahr")+ ylab("Prozentuale Abweichung vom dem Nominalwert zugehörigen Median") + # Manuelle Achsenbeschriftung
scale_y_continuous(breaks=seq(-31,16,2), expand=c(0,0), limits=c(-31,16))+ # Manuelle Definition der Y-Achse
theme(axis.line=element_line(colour="black",size=0.25)) +
theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
theme(legend.position="bottom") +
theme(axis.ticks=element_line(size=0.25,colour="black"))+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) # Achsentext rotieren# Export des Diagramms
ggsave("Abb.6-8.eps",path=("../Daten//Kap_6//Kap_6.1//Abbildungen"),
plot=last_plot(),device="eps",height=11,width=15.3,unit=c("cm"),dpi=1200)9 Abb. 6-9
# Daten einlesen
data1<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//lDrift_NitonXL3t.csv")
# Filter nach Zeilen die zum Projekt gehören
data <- filter(data1, Projekt %in% c("2018_005_VG_RB", "2018_005_VG"))
# Diagramm erstellen
data %>%
filter(Element %in% c("Al", "Si","K")) %>% # Auswahl der gewünschten Elemente
ggplot(size = 2) + # Manuelle Definition der Symbolgröße
aes(x = Time, y = ProzAbw, colour = Element) +
geom_line(size = 0.25) + # Hinzufügen von Verbindungslinien
scale_color_hue(direction = 1) + # Manuelle Definition des Farbverlaufs
theme_classic()+ # Klassisches Design
geom_point(aes(color=Element))+scale_color_grey()+ # Manuelle Definition der Spalte der Farbkategorisierung
geom_hline(yintercept=0, color = "red",size=0.25)+ # Horizontale Markierung des Null-Werts
xlab("Probennahme in Monat und Jahr")+ ylab("Prozentuale Abweichung vom dem Nominalwert zugehörigen Median") + # Manuelle Achsenbeschriftung
scale_y_continuous(breaks=seq(-31,16,2), expand=c(0,0), limits=c(-31,16))+ # Manuelle Definition der Y-Achse
theme(axis.line=element_line(colour="black",size=0.25)) +
theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
theme(legend.position="bottom") +
theme(axis.ticks=element_line(size=0.25,colour="black"))+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) # Achsentext rotieren# Export des Diagramms
ggsave("Abb.6-9.eps",path=("../Daten//Kap_6//Kap_6.1//Abbildungen"),
plot=last_plot(),device="eps",height=11,width=15.3,unit=c("cm"),dpi=1200)10 Abb. 6-11 - Statistik
# Daten einlesen und filtern
data<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//StandardSdAR-M2.csv")
data<-subset(data, Messung %in% c("E"))
# Auswahl der gewünschten Spalten
data1<- data[, c(3,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108)]
# Variationskoeffizient-Funktion mit Fehlerbehandlung
Varkoef <- function(x) { (sd(x, na.rm = TRUE) / mean(x, na.rm = TRUE)) * 100 }
# Berechnung der Variationskoeffizienten
WerteSdAM2<-(data1) %>%
group_by(Tag) %>%
summarize(across(everything(),list(Varkoef=Varkoef)))
# Auswahl der gewünschten Spalten für Varkoef_SdAM2
Varkoef_SdAM2<-WerteSdAM2[,c("Tag","Si_Varkoef","Ti_Varkoef","Al_Varkoef","Fe_Varkoef","Mn_Varkoef","Mg_Varkoef","Ca_Varkoef","K_Varkoef","P_Varkoef","S_Varkoef","Cl_Varkoef","V_Varkoef","Cr_Varkoef","Ni_Varkoef","Cu_Varkoef","Zn_Varkoef","As_Varkoef","Se_Varkoef","Rb_Varkoef","Sr_Varkoef","Y_Varkoef","Zr_Varkoef","Nb_Varkoef","Mo_Varkoef","Ag_Varkoef","Sn_Varkoef","Sb_Varkoef","Cs_Varkoef","Ba_Varkoef","La_Varkoef","Pb_Varkoef","Th_Varkoef","Bal_Varkoef")]
# Entfernen von "_Varkoef" aus den Spaltennamen
colnames(Varkoef_SdAM2) <- sub("_Varkoef$", "", colnames(Varkoef_SdAM2))
# Speichern als CSV
write.csv(Varkoef_SdAM2,
"../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//StandardSdAR-M2_Varkoef.csv",
row.names=FALSE)11 Abb. 6-12 - Statistik
11.1 Relative Messunsicherheit (RMU) der ersten beiden Tage (nur Einzelmessungen)
# Laden der Daten
data1<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Standard2709a.csv")
data2<-subset(data1, Messung %in% c("E"))
data <- data2[c(1, 2), ]
# Auswahl der gewünschten Variablen
variables <- colnames(data)[c(5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,
51,53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87,89,91,93,95,97)]
# Funktion zur Berechnung von RU mit Fehlerbehandlung für 0-Werte
calculate_RMU <- function(variable) {
data_col <- variable
sd_col <- paste0(variable, ".Error") # Fehler-Spalte
if (data_col %in% colnames(data) & sd_col %in% colnames(data)) {
# Vermeiden von Division durch Null
denominator <- ifelse(data[[data_col]] == 0, NA, data[[data_col]])
return((data[[sd_col]] / denominator) * 100)
} else {
return(rep(NA, nrow(data))) # Falls Spalten nicht existieren
}
}
# Berechnung der RU für die gewählten Variablen
for (variable in variables) {
data[[paste0(variable, "_RMU")]] <- calculate_RMU(variable)
}
# Auswahl nur der berechneten RU-Spalten
RU_columns <- grep("_RMU$", colnames(data), value = TRUE)
# Extrahiere nur die RU-Spalten als neuen DataFrame
data_RMU <- data[, RU_columns, drop = FALSE]
# Entfernen von "_RMU" aus den Spaltennamen
colnames(data_RMU) <- sub("_RMU$", "", colnames(data_RMU))
# Definieren der Spalte SAMPLE der Datei Mean als Variable SAMPLE
Tag<-data$Tag
# Zusammenfügen von SAMPLE und data_RMU in eine gemeinsame Tabelle
data_RMU<-cbind(Tag,data_RMU)
# Auswahl der relevanten Spalten
Tag1_2<-data_RMU[,c("Tag","Si","Ti","Al","Fe","Mn","Mg","Ca","K","P","S","Cl","V","Cr","Ni","Cu","Zn","As","Se","Rb","Sr","Y","Zr","Nb","Mo","Ag","Sn","Sb","Cs","Ba","La","Pb","Th","Bal")]11.2 Variationskoeffizienten
# Daten einlesen und filtern
data <- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Standard2709a.csv")
data <- subset(data, Messung %in% c("E"))
# Auswahl der gewünschten Spalten
data1 <- data[, c(2,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,
51,53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87,89,91,93,95,97)]
# Variationskoeffizient-Funktion mit Fehlerbehandlung
Varkoef <- function(x) { (sd(x, na.rm = TRUE) / mean(x, na.rm = TRUE)) * 100 }
# Berechnung der Variationskoeffizienten
Werte2709a <- data1 %>%
group_by(Tag) %>%
summarize(across(everything(), list(Varkoef = Varkoef)))
# Auswahl der gewünschten Spalten für Varkoef_2709a
Varkoef_2709a <- Werte2709a[, c("Tag", "Si_Varkoef", "Ti_Varkoef", "Al_Varkoef", "Fe_Varkoef", "Mn_Varkoef",
"Mg_Varkoef", "Ca_Varkoef", "K_Varkoef", "P_Varkoef", "S_Varkoef", "Cl_Varkoef",
"V_Varkoef", "Cr_Varkoef", "Ni_Varkoef", "Cu_Varkoef", "Zn_Varkoef", "As_Varkoef",
"Se_Varkoef", "Rb_Varkoef", "Sr_Varkoef", "Y_Varkoef", "Zr_Varkoef", "Nb_Varkoef",
"Mo_Varkoef", "Ag_Varkoef", "Sn_Varkoef", "Sb_Varkoef", "Cs_Varkoef", "Ba_Varkoef",
"La_Varkoef", "Pb_Varkoef", "Th_Varkoef", "Bal_Varkoef")]
# Entfernen von "_Varkoef" aus den Spaltennamen
colnames(Varkoef_2709a) <- sub("_Varkoef$", "", colnames(Varkoef_2709a))
# Auswahl der gewünschten Zeilen
Tage_3_26 <- Varkoef_2709a[c(3:26),]
# Kombinieren mehrer Dataframes
data3 <- rbind(Tag1_2, Tage_3_26)
# Speichern als CSV
write.csv(data3,
"../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Standard2709a_Varkoef.csv",
row.names=FALSE)12 Abb. 6-13
12.1 Berechnen der Kennwerte
# Daten einlesen
data <- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//StandardSdAR-M2.csv")
# Berechnung des Mittelwerts für jede Spalte, gruppiert nach 'Tag'
Richtig <- data %>%
group_by(Tag) %>%
summarize(across(everything(), list(mean = mean)))
# Speichern der berechneten Mittelwerte als CSV-Datei
write.csv(Richtig,
"../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//StandardSdAR-M2_Richtig.csv",
row.names = FALSE)12.2 Erstellen Abb. 6-13
In die zuvor erstellte Datei wurden händisch die Mittelwerte für die einzelnen Messorte, d.h. die Wiederholpräzision, eingetragen (Tag 07.1 (=Tag 01-07), 19.1 (=Tag 08-19), 23.1 (=Tag 20-23)) sowie die Spalten B bis O gelöscht. Die Tage 1 bis 3 des Jahres 2019 wurden als Tage 24 bis 26 (mit 26.1 als Wiederholpräzision) eingefügt um die Abbildung mit den Daten in der richtigen Reihenfolge erstellen zu können. Ergänzend wurde eine Spalte mit den zugehörigen Messorten eingefügt.
# Daten einlesen
data<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//StandardSdAR-M2_Richtig_bearb.csv")
# Diagramm erstellen
Richtig_SdAR_M2_Si <- ggplot(data, aes(x=Tag, y=Si_mean, color=Messort)) +
geom_point(aes(shape=Messort), size=1) + # Punkte für verschiedene Messorte
scale_shape_manual(values=c(15,16,2,17)) +
scale_color_manual(values=c("grey80","grey55","black","Wheat4")) +
geom_errorbar(aes(ymin=Si_mean-Si_Error_mean, ymax=Si_mean+Si_Error_mean),
width=0.2, position=position_dodge(0.9)) + # Fehlerbalken aus Abb. 6.3
geom_hline(yintercept=385367.54, color="red", size=0.25) + # Mittelwert aus Abb. 6.3
geom_hline(yintercept=387081.74, color="red", size=0.25, linetype="dashed") + # Obergrenze aus Abb. 6.3
geom_hline(yintercept=383653.35, color="red", size=0.25, linetype="dashed") + # Untergrenze aus Abb. 6.3
geom_vline(xintercept="Tag 07.1", color="black", size=0.25) + # Vertikale Markierungen der Wiederholpräzision
geom_vline(xintercept="Tag 19.1", color="black", size=0.25) +
geom_vline(xintercept="Tag 23.1", color="black", size=0.25) +
geom_vline(xintercept="Tag 26.1", color="black", size=0.25) +
scale_y_continuous(breaks=seq(305000,390000,10000), expand=c(0,0), limits=c(305000,390000)) + # Manuelle Definition der Y-Achse
xlab("Messtage") + ylab("Si in ppm") + # Manuelle Achsenbeschriftung
theme_classic() + # Klassisches Design
theme(axis.line=element_line(colour="black", size=0.25)) +
theme(legend.position="bottom") +
theme(legend.title=element_blank(),
legend.text=element_text(size=8),
axis.title=element_text(size=9),
axis.text=element_text(size=8, color="black"),
axis.text.x = element_text(angle=90, vjust=0.5, hjust=1)) # Achsentext rotieren
Richtig_SdAR_M2_Al<- ggplot(data, aes(x=Tag,y=Al_mean,color=Messort)) + geom_point(aes(shape=Messort),size=1) + scale_shape_manual(values=c(15,16,2,17))+scale_color_manual(values=c("grey80","grey55","black","Wheat4"))+
theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(52500,80000, 5000), expand=c(0,0), limits=c(52500,80000))+geom_hline(yintercept=78427.18, color = "red",size=0.25)+geom_hline(yintercept=79151.18, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=77703.18, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 07.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 19.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 23.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+ xlab("Messtage") + ylab("Al in ppm") + theme_classic() + theme(axis.line=element_line(colour="black",size=0.25)) +
theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) + theme(legend.position="bottom")+ geom_errorbar(aes(ymin=Al_mean-Al_Error_mean, ymax=Al_mean+Al_Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
Richtig_SdAR_M2_K<- ggplot(data, aes(x=Tag,y=K_mean,color=Messort)) + geom_point(aes(shape=Messort),size=1) + scale_shape_manual(values=c(15,16,2,17))+scale_color_manual(values=c("grey80","grey55","black","Wheat4"))+
theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(38500,41500, 500), expand=c(0,0), limits=c(38500,41500))+geom_hline(yintercept=41380.59, color = "red",size=0.25)+geom_hline(yintercept=41484.06, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=41277.11, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 07.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 19.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 23.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+
xlab("Messtage") + ylab("K in ppm") + theme_classic() + theme(axis.line=element_line(colour="black",size=0.25)) + theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) + theme(legend.position="bottom")+ geom_errorbar(aes(ymin=K_mean-K_Error_mean, ymax=K_mean+K_Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
Richtig_SdAR_M2_P<- ggplot(data, aes(x=Tag,y=P_mean,color=Messort)) + geom_point(aes(shape=Messort),size=1) + scale_shape_manual(values=c(15,16,2,17))+scale_color_manual(values=c("grey80","grey55","black","Wheat4"))+
theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(500,1350,100), expand=c(0,0), limits=c(500,1350))+geom_hline(yintercept=878.64, color = "red",size=0.25)+geom_hline(yintercept=910.88, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=846.39, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 07.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 19.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 23.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+ xlab("Messtage") + ylab("P in ppm") + theme_classic() +
theme(axis.line=element_line(colour="black",size=0.25)) + theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
theme(legend.position="bottom")+ geom_errorbar(aes(ymin=P_mean-P_Error_mean, ymax=P_mean+P_Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
Richtig_SdAR_M2_Rb<- ggplot(data, aes(x=Tag,y=Rb_mean,color=Messort)) + geom_point(aes(shape=Messort),size=1) + scale_shape_manual(values=c(15,16,2,17))+scale_color_manual(values=c("grey80","grey55","black","Wheat4"))+
theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(130,155,5), expand=c(0,0), limits=c(135,155))+geom_hline(yintercept=143.59, color = "red",size=0.25)+geom_hline(yintercept=144.74, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=142.44, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 07.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 19.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 23.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+ xlab("Messtage") + ylab("Rb in ppm") + theme_classic() +
theme(axis.line=element_line(colour="black",size=0.25)) + theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
theme(legend.position="bottom")+ geom_errorbar(aes(ymin=Rb_mean-Rb_Error_mean, ymax=Rb_mean+Rb_Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
Richtig_SdAR_M2_Sr<- ggplot(data, aes(x=Tag,y=Sr_mean,color=Messort)) + geom_point(aes(shape=Messort),size=1) + scale_shape_manual(values=c(15,16,2,17))+scale_color_manual(values=c("grey80","grey55","black","Wheat4"))+
theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(138,152,2), expand=c(0,0), limits=c(138,152))+geom_hline(yintercept=146.40, color = "red",size=0.25)+geom_hline(yintercept=147.97, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=144.82, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 07.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 19.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 23.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+ xlab("Messtage") + ylab("Sr in ppm") + theme_classic() + theme(axis.line=element_line(colour="black",size=0.25)) + theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
theme(legend.position="bottom")+ geom_errorbar(aes(ymin=Sr_mean-Sr_Error_mean, ymax=Sr_mean+Sr_Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
Richtig_SdAR_M2_Y<- ggplot(data, aes(x=Tag,y=Y_mean,color=Messort)) + geom_point(aes(shape=Messort),size=1) + scale_shape_manual(values=c(15,16,2,17))+scale_color_manual(values=c("grey80","grey55","black","Wheat4"))+
theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(24,34,2), expand=c(0,0), limits=c(24,34))+geom_hline(yintercept=28.54, color = "red",size=0.25)+geom_hline(yintercept=29.74, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=27.34, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 07.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 19.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 23.1", color = "black",size=0.25)+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+
xlab("Messtage") + ylab("Y in ppm") + theme_classic() + theme(axis.line=element_line(colour="black",size=0.25)) + theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) + theme(legend.position="bottom")+ geom_errorbar(aes(ymin=Y_mean-Y_Error_mean, ymax=Y_mean+Y_Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
# Kombination der Diagramme
ggarrange(Richtig_SdAR_M2_Si,Richtig_SdAR_M2_Al,Richtig_SdAR_M2_K,
Richtig_SdAR_M2_P,Richtig_SdAR_M2_Rb,Richtig_SdAR_M2_Sr,
Richtig_SdAR_M2_Y,ncol=2,nrow=4,common.legend=TRUE)+theme(legend.position="bottom")# Export des kombinierten Diagramms
ggsave("Abb.6-13.eps",path=("../Daten//Kap_6//Kap_6.1//Abbildungen"),
plot=last_plot(),device="eps",height=20.5,width=15.3,unit=c("cm"),dpi=1200)13 Abb. 6-14
13.1 Berechnen der Kennwerte
# Daten einlesen
data<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Standard2709a.csv")
# Berechnung des Mittelwerts für jede Spalte, gruppiert nach 'Tag'
Richtig<-(data) %>%
group_by(Tag) %>%
summarize(across(everything(),list(mean=mean)))
# Speichern der berechneten Mittelwerte als CSV-Datei
write.csv(Richtig,
"../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Standard2709a_Richtig.csv",
row.names=FALSE)13.2 Erstellen Abb. 6-14
In die zuvor erstellte Datei wurde händisch der Mittelwert, d.h. die Wiederholpräzision, eingetragen (Tag 26.1 (=Tag 01-26)) sowie die Spalten B bis D gelöscht.
# Daten einlesen
data<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Standard2709a_Richtig_bearb.csv")
# Diagramm erstellen
Richtig_2709a_Si <- ggplot(data, aes(x = Tag, y = Si_mean)) +
geom_point(aes(shape = "rectangular"), size = 1) + # Definieren der Symbole als Rechtecke
theme(axis.ticks = element_line(size = 0.25, colour = "black")) +
scale_y_continuous(breaks = seq(260000, 310000, 5000), expand = c(0, 0), limits = c(275000, 300000)) + # Manuelle Definition der Y-Achse
geom_hline(yintercept = 287931.23, color = "red", size = 0.25) + # Mittelwert aus Abb. 6.4
geom_hline(yintercept = 286290.03, color = "red", size = 0.25, linetype = "dashed") + # Untergrenze aus Abb. 6.4
geom_hline(yintercept = 289572.43, color = "red", size = 0.25, linetype = "dashed") + # Obergrenze aus Abb. 6.4
geom_vline(xintercept = "Tag 26.1", color = "black", size = 0.25) + # Vertikale Markierungen der Wiederholpräzision
xlab("Messtage") + ylab("Si in ppm") + # Manuelle Achsenbeschriftung
theme_classic() + # Klassisches Design
theme(axis.line = element_line(colour = "black", size = 0.25)) +
theme(legend.title = element_blank(),
legend.text = element_text(size = 8),
axis.title = element_text(size = 9),
axis.text = element_text(size = 8, color = "black")) +
theme(legend.position = "bottom") +
geom_errorbar(aes(ymin = Si_mean - Si.Error_mean, ymax = Si_mean + Si.Error_mean),
width = .2, position = position_dodge(.9)) + # Fehlerbalken aus Abb. 6.4
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1)) # Achsentext rotieren
Richtig_2709a_Al<- ggplot(data, aes(x=Tag,y=Al_mean)) + geom_point(aes(shape="rectangular"),size=1) + theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(76000,91000, 2000), expand=c(0,0), limits=c(77000,91500))+geom_hline(yintercept=86962.76, color = "red",size=0.25)+geom_hline(yintercept=85623.14, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=88302.38, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+ xlab("Messtage") + ylab("Al in ppm") + theme_classic() + theme(axis.line=element_line(colour="black",size=0.25)) + theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
theme(legend.position="bottom")+ geom_errorbar(aes(ymin=Al_mean-Al.Error_mean, ymax=Al_mean+Al.Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
Richtig_2709a_K<- ggplot(data, aes(x=Tag,y=K_mean)) + geom_point(aes(shape="rectangular"),size=1) + theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(18200,20000, 200), expand=c(0,0), limits=c(18300,20000))+geom_hline(yintercept=18918.29, color = "red",size=0.25)+geom_hline(yintercept=18844.31, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=18992.28, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+xlab("Messtage") + ylab("K in ppm") + theme_classic() +
theme(axis.line=element_line(colour="black",size=0.25)) + theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
theme(legend.position="bottom")+ geom_errorbar(aes(ymin=K_mean-K.Error_mean, ymax=K_mean+K.Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
Richtig_2709a_P<- ggplot(data, aes(x=Tag,y=P_mean)) + geom_point(aes(shape="rectangular"),size=1) + theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(900,1600,100), expand=c(0,0), limits=c(900,1560))+geom_hline(yintercept=1461.82, color = "red",size=0.25)+geom_hline(yintercept=1510.82, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=1412.82, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+ xlab("Messtage") + ylab("P in ppm") + theme_classic() + theme(axis.line=element_line(colour="black",size=0.25)) +
theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) + theme(legend.position="bottom")+ geom_errorbar(aes(ymin=P_mean-P.Error_mean, ymax=P_mean+P.Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
Richtig_2709a_V<- ggplot(data, aes(x=Tag,y=V_mean)) + geom_point(aes(shape="rectangular"),size=1) + theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(115,180,5), expand=c(0,0), limits=c(115,180))+geom_hline(yintercept=136.34, color = "red",size=0.25)+geom_hline(yintercept=143.37, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=129.30, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+xlab("Messtage") + ylab("V in ppm") + theme_classic() + theme(axis.line=element_line(colour="black",size=0.25)) +
theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) + theme(legend.position="bottom")+ geom_errorbar(aes(ymin=V_mean-V.Error_mean, ymax=V_mean+V.Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
Richtig_2709a_Rb<- ggplot(data, aes(x=Tag,y=Rb_mean)) + geom_point(aes(shape="rectangular"),size=1) + theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(80,100,2), expand=c(0,0), limits=c(81,93))+geom_hline(yintercept=84.42, color = "red",size=0.25)+geom_hline(yintercept=85.91, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=83.23, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+xlab("Messtage") + xlab("Messtage") + ylab("Rb in ppm") + theme_classic() + theme(axis.line=element_line(colour="black",size=0.25)) + theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) + theme(legend.position="bottom")+ geom_errorbar(aes(ymin=Rb_mean-Rb.Error_mean, ymax=Rb_mean+Rb.Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
Richtig_2709a_Sr<- ggplot(data, aes(x=Tag,y=Sr_mean)) + geom_point(aes(shape="rectangular"),size=1) + theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(210,235,2), expand=c(0,0), limits=c(216,234))+geom_hline(yintercept=223.57, color = "red",size=0.25)+geom_hline(yintercept=224.82, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=222.32, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+xlab("Messtage") + ylab("Sr in ppm") + theme_classic() + theme(axis.line=element_line(colour="black",size=0.25)) + theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) + theme(legend.position="bottom")+ geom_errorbar(aes(ymin=Sr_mean-Sr.Error_mean, ymax=Sr_mean+Sr.Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
Richtig_2709a_Y<- ggplot(data, aes(x=Tag,y=Y_mean))+ geom_point(aes(shape="rectangular"),size=1) + theme(axis.ticks=element_line(size=0.25,colour="black"))+scale_y_continuous(breaks=seq(8,17,1), expand=c(0,0), limits=c(10,17))+geom_hline(yintercept=13.67, color = "red",size=0.25)+geom_hline(yintercept=14.70, color = "red",size=0.25,linetype="dashed")+geom_hline(yintercept=12.65, color = "red",size=0.25,linetype="dashed")+geom_vline(xintercept="Tag 26.1", color = "black",size=0.25)+xlab("Messtage") + ylab("Y in ppm") + theme_classic() + theme(axis.line=element_line(colour="black",size=0.25)) + theme(legend.title=element_blank(),legend.text=element_text(size=8),axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) + theme(legend.position="bottom")+ geom_errorbar(aes(ymin=Y_mean-Y.Error_mean, ymax=Y_mean+Y.Error_mean), width=.2,position=position_dodge(.9))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
# Kombination der Diagramme
ggarrange(Richtig_2709a_Si,Richtig_2709a_Al,Richtig_2709a_K,Richtig_2709a_P,Richtig_2709a_V,Richtig_2709a_Rb,Richtig_2709a_Sr,Richtig_2709a_Y,ncol=2,nrow=4,common.legend=TRUE)+theme(legend.position="bottom")# Export des kombinierten Diagramms
ggsave("Abb.6-14.eps",path=("../Daten//Kap_6//Kap_6.1//Abbildungen"),
plot=last_plot(),device="eps",height=20.5,width=15.3,unit=c("cm"),dpi=1200)14 Abb. 6-15
# Daten einlesen
data<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//StandardSdAR-M2.csv")
# Diagramm erstellen
Kontrolle_SdAR_M2_Sr<- ggplot(data, aes(x=Tag,y=Sr,color=Messort)) +
geom_point(aes(shape=Messung),size=1) + # Punkte für verschiedene Messungen
scale_shape_manual(values=c(1,8))+ geom_line(size = 0.25)+ # Manuelle Definition der Symbole
scale_color_manual(values=c("grey80","grey55","black","Wheat4"))+ # Manuelle Definition der Farben
theme(axis.ticks=element_line(size=0.25,colour="black"))+
scale_y_continuous(breaks=seq(132,152,2), expand=c(0,0), limits=c(132,152))+ # Manuelle Definition der Y-Achse
geom_hline(yintercept=146.40, color = "red",size=0.25)+ # Mittelwert aus Abb. 6.3
geom_hline(yintercept=147.97, color = "red",size=0.25,linetype="dashed")+ # Obergrenze aus Abb. 6.3
geom_hline(yintercept=144.82, color = "red",size=0.25,linetype="dashed")+ # Untergrenze aus Abb. 6.3
geom_hline(yintercept=149.55, color = "black",size=0.25,linetype="dotted")+ # Doppelte Untergrenze aus Abb. 6.3
geom_hline(yintercept=143.24, color = "black",size=0.25,linetype="dotted")+ # Doppelte Untergrenze aus Abb. 6.3
xlab("Messtage") + ylab("Sr in ppm") + # Manuelle Achsenbeschriftung
theme_classic() + # Klassisches Design
theme(axis.line=element_line(colour="black",size=0.25)) +
theme(legend.title=element_blank(),legend.text=element_text(size=8),
axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
theme(legend.position="bottom")+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) # Achsentext rotieren
Kontrolle_SdAR_M2_Rb<- ggplot(data, aes(x=Tag,y=Rb,color=Messort)) +
geom_point(aes(shape=Messung),size=1) + geom_line(size = 0.25) +
scale_shape_manual(values=c(1,8))+
scale_color_manual(values=c("grey80","grey55","black","Wheat4"))+
theme(axis.ticks=element_line(size=0.25,colour="black"))+
scale_y_continuous(breaks=seq(130,155,2), expand=c(0,0), limits=c(135,155))+
geom_hline(yintercept=143.59, color = "red",size=0.25)+
geom_hline(yintercept=144.74, color = "red",size=0.25,linetype="dashed")+
geom_hline(yintercept=142.44, color = "red",size=0.25,linetype="dashed")+
geom_hline(yintercept=145.89, color = "black",size=0.25,linetype="dotted")+
geom_hline(yintercept=141.29, color = "black",size=0.25,linetype="dotted")+
xlab("Messtage") + ylab("Rb in ppm") + theme_classic() +
theme(axis.line=element_line(colour="black",size=0.25)) +
theme(legend.title=element_blank(),legend.text=element_text(size=8),
axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
theme(legend.position="bottom")+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
Kontrolle_SdAR_M2_Y<- ggplot(data, aes(x=Tag,y=Y,color=Messort)) +
geom_point(aes(shape=Messung),size=1) +geom_line(size = 0.25) +
scale_shape_manual(values=c(1,8))+
scale_color_manual(values=c("grey80","grey55","black","Wheat4"))+
theme(axis.ticks=element_line(size=0.25,colour="black"))+
scale_y_continuous(breaks=seq(24,34,2), expand=c(0,0), limits=c(24,34))+
geom_hline(yintercept=28.54, color = "red",size=0.25)+
geom_hline(yintercept=29.74, color = "red",size=0.25,linetype="dashed")+
geom_hline(yintercept=27.34, color = "red",size=0.25,linetype="dashed")+
geom_hline(yintercept=30.94, color = "black",size=0.25,linetype="dotted")+
geom_hline(yintercept=26.14, color = "black",size=0.25,linetype="dotted")+
xlab("Messtage") + ylab("Y in ppm") + theme_classic() +
theme(axis.line=element_line(colour="black",size=0.25)) +
theme(legend.title=element_blank(),legend.text=element_text(size=8),
axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
theme(legend.position="bottom")+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
Kontrolle_SdAR_M2_Zn<- ggplot(data, aes(x=Tag,y=Zn,color=Messort)) +
geom_point(aes(shape=Messung),size=1) +geom_line(size = 0.25) +
scale_shape_manual(values=c(1,8))+
scale_color_manual(values=c("grey80","grey55","black","Wheat4"))+
theme(axis.ticks=element_line(size=0.25,colour="black"))+
scale_y_continuous(breaks=seq(650,790,20), expand=c(0,0), limits=c(650,780))+
geom_hline(yintercept=708.94, color = "red",size=0.25)+
geom_hline(yintercept=714.42, color = "red",size=0.25,linetype="dashed")+
geom_hline(yintercept=703.45, color = "red",size=0.25,linetype="dashed")+
geom_hline(yintercept=719.91, color = "black",size=0.25,linetype="dotted")+
geom_hline(yintercept=697.96, color = "black",size=0.25,linetype="dotted")+
xlab("Messtage") + ylab("Zn in ppm") + theme_classic() +
theme(axis.line=element_line(colour="black",size=0.25)) +
theme(legend.title=element_blank(),legend.text=element_text(size=8),
axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
theme(legend.position="bottom")+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
# Daten einlesen
data<- read.csv("../Daten//Kap_6//Kap_6.1//Grundlagen//Standards//Standard2709a.csv")
# Diagramm erstellen
Kontrolle_2907a_Rb<- ggplot(data, aes(x=Tag,y=Rb,color=Messort)) +
geom_point(aes(shape=Messung),size=1) +# Punkte für verschiedene Messungen
scale_shape_manual(values=c(1,8))+ # Manuelle Definition der Symbole
scale_color_manual(values=c("grey21"))+ geom_line(size = 0.25)+ # Manuelle Definition der Farben
theme(axis.ticks=element_line(size=0.25,colour="black"))+
scale_y_continuous(breaks=seq(80,94,2), expand=c(0,0), limits=c(81,91))+ # Manuelle Definition der Y-Achse
geom_hline(yintercept=84.42, color = "red",size=0.25)+ # Mittelwert aus Abb. 6.4
geom_hline(yintercept=85.61, color = "red",size=0.25,linetype="dashed")+ # Obergrenze aus Abb. 6.4
geom_hline(yintercept=83.23, color = "red",size=0.25,linetype="dashed")+ # Untergrenze aus Abb. 6.4
geom_hline(yintercept=86.80, color = "black",size=0.25,linetype="dotted")+ # Doppelte Obergrenze aus Abb. 6.4
geom_hline(yintercept=82.04, color = "black",size=0.25,linetype="dotted")+ # Doppelte Untergrenze aus Abb. 6.4
xlab("Messtage") + ylab("Rb in ppm") + # Manuelle Achsenbeschriftung
theme_classic() + # Klassisches Design
theme(axis.line=element_line(colour="black",size=0.25)) +
theme(legend.title=element_blank(),legend.text=element_text(size=8),
axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
theme(legend.position="bottom")+ theme(legend.position="bottom")+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) # Achsentext rotieren
Kontrolle_2907a_Sr<- ggplot(data, aes(x=Tag,y=Sr,color=Messort)) +
geom_point(aes(shape=Messung),size=1) +scale_shape_manual(values=c(1,8))+
scale_color_manual(values=c("grey21"))+ geom_line(size = 0.25)+
theme(axis.ticks=element_line(size=0.25,colour="black"))+
scale_y_continuous(breaks=seq(210,235,2), expand=c(0,0), limits=c(210,235))+
geom_hline(yintercept=223.57, color = "red",size=0.25)+
geom_hline(yintercept=224.82, color = "red",size=0.25,linetype="dashed")+
geom_hline(yintercept=222.32, color = "red",size=0.25,linetype="dashed")+
geom_hline(yintercept=226.07, color = "black",size=0.25,linetype="dotted")+
geom_hline(yintercept=221.08, color = "black",size=0.25,linetype="dotted")+
xlab("Messtage") + ylab("Sr in ppm") + theme_classic() +
theme(axis.line=element_line(colour="black",size=0.25)) +
theme(legend.title=element_blank(),legend.text=element_text(size=8),
axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
theme(legend.position="bottom")+ theme(legend.position="bottom")+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
Kontrolle_2907a_Y<- ggplot(data, aes(x=Tag,y=Y,color=Messort))+
geom_point(aes(shape=Messung),size=1) +scale_shape_manual(values=c(1,8))+
scale_color_manual(values=c("grey21"))+ geom_line(size = 0.25)+
theme(axis.ticks=element_line(size=0.25,colour="black"))+
scale_y_continuous(breaks=seq(11,17,1), expand=c(0,0), limits=c(11,17))+
geom_hline(yintercept=13.67, color = "red",size=0.25)+
geom_hline(yintercept=14.70, color = "red",size=0.25,linetype="dashed")+
geom_hline(yintercept=12.65, color = "red",size=0.25,linetype="dashed")+
geom_hline(yintercept=15.04, color = "black",size=0.25,linetype="dotted")+
geom_hline(yintercept=12.31, color = "black",size=0.25,linetype="dotted")+
xlab("Messtage") + ylab("Y in ppm") + theme_classic() +
theme(axis.line=element_line(colour="black",size=0.25)) +
theme(legend.title=element_blank(),legend.text=element_text(size=8),
axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
theme(legend.position="bottom")+ theme(legend.position="bottom")+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
Kontrolle_2907a_Zn<- ggplot(data, aes(x=Tag,y=Zn,color=Messort))+
geom_point(aes(shape=Messung),size=1) +scale_shape_manual(values=c(1,8))+
geom_line(size = 0.25)+scale_color_manual(values=c("grey21"))+
theme(axis.ticks=element_line(size=0.25,colour="black"))+
scale_y_continuous(breaks=seq(78,102,2), expand=c(0,0), limits=c(78,102))+
geom_hline(yintercept=91.65, color = "red",size=0.25)+
geom_hline(yintercept=96.21, color = "red",size=0.25,linetype="dashed")+
geom_hline(yintercept=87.09, color = "red",size=0.25,linetype="dashed")+
geom_hline(yintercept=100.78, color = "black",size=0.25,linetype="dotted")+
geom_hline(yintercept=82.52, color = "black",size=0.25,linetype="dotted")+
xlab("Messtage") + ylab("Zn in ppm") + theme_classic() +
theme(axis.line=element_line(colour="black",size=0.25)) +
theme(legend.title=element_blank(),legend.text=element_text(size=8),
axis.title=element_text(size=9),axis.text=element_text(size=8,color="black")) +
theme(legend.position="bottom")+ theme(legend.position="bottom")+
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
# Kombination der Diagramme
ggarrange(Kontrolle_SdAR_M2_Rb,Kontrolle_SdAR_M2_Sr,Kontrolle_SdAR_M2_Y,
Kontrolle_SdAR_M2_Zn,Kontrolle_2907a_Rb,Kontrolle_2907a_Sr,
Kontrolle_2907a_Y,Kontrolle_2907a_Zn,ncol=2,nrow=4,common.legend=TRUE)+
theme(legend.position="bottom")# Export des kombinierten Diagramms
ggsave("Abb.6-15.eps",path=("../Daten//Kap_6//Kap_6.1//Abbildungen"),
plot=last_plot(),device="eps",height=20.5,width=15.3,unit=c("cm"),dpi=1200)