R语言contour函数报错increasing 'x' and 'y' values expected如何解决
问题修复方案
你收到的报错和z矩阵无关,问题出在x、y两个变量不符合contour()函数的参数要求:contour()要求传入的x、y必须是严格单调递增的数值向量,且长度要和z矩阵的行列数对应(x长度等于z的行数,y长度等于z的列数)。你当前的脚本里没有预先定义符合要求的x、y向量,才会触发报错。
具体修复步骤
- 第一步:先定义严格递增的x、y数值序列,可根据你需要的绘图范围调整区间和步长
- 第二步:再用
outer()计算z矩阵,后续绘制等高线的逻辑无需修改
完整可运行示例代码
# 先定义x、y递增向量,这里以x∈[-5,5]、y∈[-3,3],步长0.1为例 x <- seq(from = -5, to = 5, by = 0.1) y <- seq(from = -3, to = 3, by = 0.1) # 原有计算和绘图逻辑不需要改动 z <- outer(x,y, function (x,y)cos (y)/(1+x ^2)) contour(x,y,z) contour(x,y,z, nlevels =45 , add = T) za <-( z- t(z))/2 contour(x,y, za, nlevels =15)
补充说明
如果你的x、y是其他来源的序列,不是有序状态,只要用sort()函数处理成递增格式即可,示例:
x <- sort(x) y <- sort(y)
处理后再传入contour()就可以正常运行。
内容的提问来源于stack exchange,提问作者Tiny
相关产品推荐
相关产品推荐

