You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将qcc生成的u控制图标签从默认校准数据、新数据改为Old与New?

qcc包u型控制图自定义图例标签方法

标签不生效的原因

传入data.name = "Old"、newdata.name = "New"参数无法修改图上标签,是因为qcc包绘制u型、c型等计数类控制图时,图例文本在底层绘图代码中是硬编码的固定字符串,没有对接用户传入的名称参数,因此默认固定显示“Calibration data”“New data”,不会读取传入的自定义名称。

可落地的修改方案

单次绘图:图生成后直接替换图例

正常运行qcc绘图代码生成基础图后,调用legend()函数在原图图例位置生成匹配样式的新图例,替换原有默认文本即可,完整可运行代码:

dat <- data.frame(id = c(1:10), num = sample(1:10), den = c(11:20))
# 生成基础u控制图
qcc::qcc(data = dat$num[1:5], sizes = dat$den[1:5],
         newdata = dat$num[6:10], newsizes = dat$den[6:10],
         type = "u", plot = T)
# 替换自定义文本图例,匹配原图样式
legend(
  x = "topright",
  legend = c("Old", "New"),
  pch = c(1, 3), # 匹配原图点样式:基准组为实心圆点,新增组为十字标记
  col = c("black", "red"), # 匹配原图点颜色
  bty = "o" # 保留原图图例边框
)

频繁绘图:临时修改绘图函数的硬编码文本

如果需要批量绘制u控制图,不想每次手动添加图例替换代码,可以在当前R会话中临时调整qcc包的内部绘图逻辑,把硬编码的固定文本替换为自定义值。这种修改仅对当前R会话有效,不会改动本地安装的包文件,重启R后自动恢复默认设置,操作代码:

# 提取qcc内置的绘图函数
custom_plot <- qcc:::plot.qcc
# 替换函数内部硬编码的图例文本
custom_body <- do.call(
  substitute,
  list(
    body(custom_plot),
    list(
      "Calibration data" = "Old",
      "New data" = "New"
    )
  )
)
body(custom_plot) <- custom_body
# 将修改后的函数绑定到qcc的命名空间
assignInNamespace("plot.qcc", custom_plot, ns = "qcc")

运行这段代码后,后续直接调用qcc()函数绘制u型控制图,生成的图例就会直接显示自定义的“Old”和“New”文本,无需额外手动调整。

内容的提问来源于stack exchange,提问作者Y. Z.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.31 07:54:03