Julia使用Plots库scatter!函数出现MethodError错误怎么办?
错误触发原因
你的代码核心问题是z变量的类型不符合预期:
- 你在定义
square1函数以及调用scatter!时用到的全局变量z,实际被赋值为了字符串类型而非你预期的整数数组 - 字符串在Julia中是可迭代的字符序列,传入
scatter!时会被拆分为多个独立的Char类型参数,Plots的绘图方法找不到匹配这么多Char参数的scatter实现,因此抛出该MethodError。
解决方法
按以下步骤调整代码即可:
- 先显式定义
z为你需要的整数数组,避免全局变量未定义/类型错误问题,同时调整函数定义将z作为参数传入,避免全局变量污染:
# 调整函数定义,将z作为显式参数传入 coordinate_distance(x,z) = abs.(x .- z) square1(x, z) = sum(coordinate_distance(x,z).^2)
- 绘图前先声明
z的实际值,再调用绘图接口:
using Plots LB,UB = 0,20 # 这里替换为你实际需要的整数数组 z = [1,3,6,9,12,15,18] # 绘制函数曲线时用匿名函数绑定z参数 plot(x -> square1(x, z), LB, UB, legend=false) # 绘制散点用广播语法更简洁 scatter!(z, square1.(z, z))
- 若调整后仍报错,可运行
@show z typeof(z)检查z的实际类型,确认是整数数组而非字符串即可。
内容的提问来源于stack exchange,提问作者Pradnk77
相关产品推荐
相关产品推荐

