场景

用Julia画图时经常会遇到偏差比较大,或者需要外推的数据,如:

data = [
    1 2 3 4
    1 4-1 9+1 16
]

这时候就只能先针对现有的数据拟合一个函数再画。

GLM.jl

来源:Examples · GLM

一种方法是用回归的方法拟合出模型再画图。回归的流程是先将数据装入DataFrame,给出结果后拟合。

df = DataFrame(X=data[1,:], Y=vec(data[2,:]))
ols = lm(@formula(Y ~ X), data)
x1 = 0:.1:5
y1 = predict(ols, DataFrame(X=x1))

vec用来转换类型,这里不用也行。

最后用plot!(x1, y1)画图就好了。

Loess.jl

来源:GitHub - JuliaStats/Loess.jl: Local regression, so smooooth!

如果不能用简单公式拟合,可以尝试用更加通用的Loess。但Loess的缺点是不能外推。

model = loess(data[1,:], data[2,:], span=.7)
x2 = range(extrema(data[1,:])...; step = 0.1)
y2 = Loess.predict(model, x2)

完整示例

glm-and-loess.jl