qicharts2包qic函数:能否为不同分面配置独立的中心线与控制限?
qicharts2包qic()函数分面使用不同part参数的解决方法
问题说明
在qicharts2包(v0.7.5)的qic()函数中,用户原本期望通过设置长度为2的part参数,让每个元素对应一个分面,从而实现不同分面用各自的part值计算中心线与控制限,但实际效果是两个part值会被同时应用到所有分面,无法达到预期。
解决思路与方法
qic()函数本身的part参数不支持直接按分面映射不同取值,要实现需求,得拆分数据后单独绘制控制图,再合并成分面效果,具体步骤如下:
- 按分面变量(示例中是
gender)拆分数据集 - 对每个子数据集单独调用
qic(),设置对应的part参数 - 用
patchwork包将多个控制图合并,模拟分面展示
示例代码
library(qicharts2) library(dplyr) library(patchwork) # 预处理数据(和原示例一致) cabg <- cabg %>% mutate(month = as.Date(cut(date, 'month'))) cabg_by_month_gender <- cabg %>% group_by(month, gender) %>% summarise(readmissions = sum(readmission), n = n(), .groups = "drop") # 按gender拆分数据 data_list <- split(cabg_by_month_gender, cabg_by_month_gender$gender) # 分别绘制控制图,设置对应part参数 p1 <- qic(month, readmissions, n, data = data_list[[1]], chart = 'p', y.percent = TRUE, title = '30天内再入院率(P图)- 男性', ylab = '', xlab = '月份', part = 10) p2 <- qic(month, readmissions, n, data = data_list[[2]], chart = 'p', y.percent = TRUE, title = '30天内再入院率(P图)- 女性', ylab = '', xlab = '月份', part = 20) # 合并分面,可设置ncol调整排列方式(1列/2列) p1 + p2 + plot_layout(ncol = 2)
补充优化
如果需要统一的整体标题和样式,可以在合并后调整:
(p1 + p2) + plot_annotation(title = '30天内再入院率(P图)', subtitle = '按性别分组,各分组使用独立part参数计算控制限') & theme(plot.title = element_text(hjust = 0.5))
内容的提问来源于stack exchange,提问作者MCornejo
相关产品推荐
相关产品推荐

