library(tidyverse)
library(ggQC)
set.seed(5555)
Golden_Egg_df <- data.frame(month = 1:12,
egg_diameter = rnorm(n = 12, mean = 1.5, sd = 0.2))
Golden_Egg_df$egg_diameter[3] <- 2.5
上面生成了示例数据...以创建如下所示的图。我希望红线上方或下方的所有点都突出显示,最好在该点周围有一个圆圈,在我们的示例中为第三点。
我知道我可以通过添加geom_point()
语句来添加ifelse
。我不知道如何从stat_QC()
中剥离较高的“红线值” 和“较低的红线” 值,以使我能够利用我提出的建议方法。
在此希望您知道如何提供答案。
XmR_Plot <- ggplot(Golden_Egg_df, aes(x = month, y = egg_diameter)) +
geom_point() + geom_line() +
stat_QC(method = "XmR")
答案 0 :(得分:3)
初始图:
library(ggplot2)
p <- ggplot(Golden_Egg_df, aes(x = month, y = egg_diameter)) +
geom_point() + geom_line() +
stat_QC(method = "XmR")
这是我们使用ggplot_build
从红线中提取数据的一种选择。您可以在此处阅读有关ggplot_build
对象的更多信息:https://rud.is/books/creating-ggplot2-extensions/demystifying-ggplot2.html#the-ggplot_built-object
pb <- ggplot_build(p)
thres <- range(pb$data[[3]]$yintercept) # you need to inspect pb$data to find the right element
thres
包含红线的y值。
thres
#[1] 0.7319105 2.3820961
如果现在仅要突出显示这些值上方(或下方)的点,请添加另一个包含初始数据子集的点层
p + geom_point(
data = subset(Golden_Egg_df,
egg_diameter > max(thres) | egg_diameter < min(thres)),
shape = 21,
size = 4,
col = "red"
)