/ / pokaż 2 standardowe odchylenia na karcie kontrolnej ggplot2 (oprócz normalnej 3) - r, ggplot2

pokaż 2 odchylenia standardowe na wykresie kontrolnym ggplot2 (oprócz normalnego 3) - r, ggplot2

Najpierw tworzę dane:

library(ggplot2)
library(ggQC)
set.seed(5555)
Golden_Egg_df <- data.frame(month=1:12, egg_diameter = rnorm(n = 12, mean = 1.5, sd = 0.2))

Następnie ustawiam podstawowy ggplot.

XmR_Plot <- ggplot(Golden_Egg_df, aes(x = month, y = egg_diameter)) +
geom_point() + geom_line()

Mogę stworzyć prosty wykres kontrolny z pakietem ggQC w następujący sposób.

XmR_Plot + stat_QC(method = "XmR")

Mogę przeszukać wykres kontrolny, aby pokazać różne poziomy odchylenia standardowego (w tym przykładzie między 1-3).

XmR_Plot + stat_qc_violations(method = "XmR")

Chcę widzieć oba. 2 i 3 standardowe odchylenia na tym samym wykresie, bez fasetowania. Moja wyobrażona składnia byłaby

XmR_Plot + stat_QC(method = "XmR", stand.dev = c(2, 3))

czy jakoś tak. Ale to oczywiście nie działa, jak uzyskać wiele standardowych odchyleń, aby pokazać je na 1 wykresie? Może wyglądać mniej więcej tak:

[obraz

Odpowiedzi:

2 dla odpowiedzi № 1

Zdecydowanie zalecamy samodzielne obliczenie statystyk podsumowujących. Otrzymasz o wiele większą kontrolę nad fabułą!

library(ggplot2)
library(dplyr)
library(tidyr)

set.seed(5555)
golden.egg.df = data.frame(month=1:12,
egg_diameter = rnorm(n = 12,
mean = 1.5,
sd = 0.2)
)

lines.df = golden.egg.df %>%
# Calculate all the summary stats
mutate(mean = mean(egg_diameter),
sd = sd(egg_diameter),
plus_one = mean + sd,
plus_two = mean + 2 * sd,
plus_three = mean + 3 * sd,
minus_one = mean - sd,
minus_two = mean - 2 * sd,
minus_three = mean - 3 * sd
) %>%
# Remove what we don"t want to plot
select(-month, -egg_diameter, -sd) %>%
# Filter so the dataframe is now one unique row
unique() %>%
# Make the table tall for plotting
gather(key = stat,
value = value) %>%
# Add a new column which indicates how many SDs a line is from
# the mean
mutate(linetype = gsub("[\s\S]+?_", "", stat, perl = TRUE))


ggplot(golden.egg.df,
aes(x = month, y = egg_diameter)) +
geom_hline(data = lines.df,
aes(yintercept = value, linetype = linetype)) +
geom_point() +
geom_line()

wprowadź opis obrazu tutaj