如何在ggplot2控制图中同时显示2倍与3倍标准差
在同一张非分面XmR控制图中同时显示2倍和3倍标准差的实现方法
嗨,这个需求其实很容易实现——ggQC的stat_QC支持多次叠加调用,我们只需要分别指定2倍和3倍标准差,再用不同的样式区分它们就可以了。下面是具体的代码和说明:
1. 准备数据与基础图形
先回顾你的初始代码,确保数据和基础ggplot对象正确创建:
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)) # 构建基础折线散点图 XmR_Plot <- ggplot(Golden_Egg_df, aes(x = month, y = egg_diameter)) + geom_point(size = 2) + geom_line(color = "gray50")
2. 叠加2倍和3倍标准差控制限
通过两次调用stat_QC,分别指定不同的标准差倍数,并设置不同的颜色、线型来区分两组控制限:
XmR_Plot + # 添加3倍标准差控制限(默认值,用深色实线突出) stat_QC(method = "XmR", color = "darkred", linetype = "solid", size = 1) + # 添加2倍标准差控制限(指定stand.dev=2,用红色虚线区分) stat_QC(method = "XmR", stand.dev = 2, color = "red", linetype = "dashed", size = 0.8) + # 优化图表标签与主题 labs(title = "XmR控制图(同时显示2倍&3倍标准差)", x = "月份", y = "鸡蛋直径") + theme_bw()
补充说明
- 每次调用
stat_QC都会独立计算对应倍数的控制限,叠加后就能在同一张非分面图中同时显示两组线 - 通过
color、linetype、size参数可以清晰区分2倍和3倍标准差的控制限,完全符合你想要的类似Nelson规则控制图的效果 - 如果需要标记超出控制限的异常点,可以额外叠加
stat_qc_violations(该函数同样支持指定stand.dev参数)
内容的提问来源于stack exchange,提问作者stackinator
相关产品推荐
相关产品推荐

