R语言小波相干分析绘图报错:curve函数'expr'长度不符
R语言小波相干绘图报错解决建议
你运行的小波相干绘图代码:
plot(wtc.AB, plot.phase = TRUE, lty.coi=1, col.coi="grey", lwd.coi=2, lwd.sig=2, arrow.lwd=0.03, arrow.len=0.12, ylab="Scale", xlab="Years", plot.cb=TRUE, main="Wavelet Coherence: SP500 vs Uganda Sov Bond", xaxt="n")
出现错误:
Error in curve(expr = x, from = from, to = to, xlim = xlim, ylab = ylab, : 'expr' did not evaluate to an object of length 'n'
以下是排查和解决方向:
- 验证
wtc.AB对象合法性:确认它是biwavelet包中waveletCoherence函数生成的有效结果,执行str(wtc.AB)查看结构,检查是否存在数据缺失、维度不匹配等异常。 - 先移除
xaxt="n"参数测试:该参数用于隐藏默认x轴,可能与绘图函数内部的x轴生成逻辑冲突。先运行不带此参数的代码,确认基础绘图功能正常:plot(wtc.AB, plot.phase = TRUE, lty.coi=1, col.coi="grey", lwd.coi=2, lwd.sig=2, arrow.lwd=0.03, arrow.len=0.12, ylab="Scale", xlab="Years", plot.cb=TRUE, main="Wavelet Coherence: SP500 vs Uganda Sov Bond") - 检查时间序列数据:查看
wtc.AB$t对应的时间轴数据,确保其长度与分析数据一致,且为可识别的数值或日期类型。若时间序列格式异常,会导致x轴绘制失败。 - 更新
biwavelet包:旧版本包可能存在绘图参数的兼容性问题,执行update.packages("biwavelet")更新后重试代码。 - 手动自定义x轴:若必须隐藏默认x轴并自定义,可先正常绘图,再用
axis()函数手动添加刻度:# 先绘制基础图,不隐藏x轴 plot(wtc.AB, plot.phase = TRUE, lty.coi=1, col.coi="grey", lwd.coi=2, lwd.sig=2, arrow.lwd=0.03, arrow.len=0.12, ylab="Scale", xlab="Years", plot.cb=TRUE, main="Wavelet Coherence: SP500 vs Uganda Sov Bond") # 示例:按需求设置x轴刻度和标签 axis(1, at = seq(1, length(wtc.AB$t), by = 5), labels = wtc.AB$t[seq(1, length(wtc.AB$t), by = 5)])
内容的提问来源于stack exchange,提问作者Joseph Byamugisha
相关产品推荐
相关产品推荐

