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

在R中合并两幅基础图时遇报错:Error in if (labels) { : missing value...

问题解决:合并小波功率谱图的报错修复

报错原因

你遇到的Error in if (labels) { : missing value where TRUE / FALSE is required,是因为plot_grid函数(来自cowplot包)的labels='AUTO'参数处理问题:旧版cowplot不支持'AUTO'作为labels参数值,字符型的'AUTO'会被当作逻辑值判断,转换后得到NA,从而触发错误。另外你的代码里还存在无用的layout代码,可能干扰绘图流程。

修正后的代码

my.date <- seq(as.POSIXct("2014-10-14 00:00:00", format="%F %T"), 
               by="hour", 
               length.out=6*128*24)  

library('WaveletComp')
library('cowplot') # 必须加载cowplot包,plot_grid是该包函数

x <- periodic.series(start.period=1*24, length=6*128*24)
my.data <- data.frame(date=my.date, x=x)

my.wt <- analyze.wavelet(my.data, "x",                   
                         loess.span=0, 
                         dt=1/24, dj=1/20, 
                         lowerPeriod=1/4, 
                         make.pval=TRUE, n.sim=10)

# 移除无用的layout代码,避免干扰
# layaout2 <- layout(matrix(c(1, 2, 3), nrow=3))

# 绘制并记录第一幅图
wt.image(my.wt, main="wavelet power spectrum",
         legend.params=list(lab="wavelet power levels (quantiles)", 
                              lab.line=3.5, 
                              label.digits=2),
         periodlab="period (days)")
p1 <- recordPlot() 

# 绘制并记录第二幅图
wt.image(my.wt, main="wavelet power spectrum",
         legend.params=list(lab="wavelet power levels (quantiles)", 
                              lab.line=3.5, 
                              label.digits=2),
         periodlab="period (days)")
p2 <- recordPlot()

# 合并两幅图,用明确的标签向量替代'AUTO'
plot_grid(p1, p2,
          labels=c("A", "B"), # 直接指定标签,兼容性更好
          hjust=0, vjust=1)

额外说明

  • 必须加载cowplot包,否则plot_grid函数无法正常调用。
  • 如果使用新版cowplot(v1.1.0及以上),也可以用labels="AUTO"来自动生成标签,但直接指定标签向量的方式兼容性更强,避免版本差异问题。
  • 移除无用的layout代码,因为plot_grid会自己处理布局,不需要提前设置基础绘图的布局。

内容的提问来源于stack exchange,提问作者temor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 05:34:55