如何使用Julia中的Gadfly绘制一般形式的2D功能?

时间:2017-01-05 21:39:30

标签: plot graph julia gadfly

this question我学会了如何以确定的形式绘制函数" (比如y = a0x + a1x ^ 2 + a2x ^ 3 ...)。我想知道如何以一般形式绘制函数(如ax + by + c = 0)?

对于一般形式的一些简单函数,我们可以将其转换为"确定性形式",然后将数学函数转换为Julia函数(如ax + by + c = 0到y =( ax + c)/( - b))。但是,对于某些复杂的函数,编写Julia函数并不容易。

例如:enter image description here

有没有办法可以使用Gadfly绘制此功能?

1 个答案:

答案 0 :(得分:1)

Mattriks建议使用Geom.contour在此issue中以一般形式绘制函数。

我在我的例子中尝试过它,它的效果非常好。

例如,在问题的函数中: enter image description here

说参数列表是

para=[1.27274,0.625272,1.18109,-2.01996,-0.917423,-1.43166,0.124006,-0.365534,-0.357239,-0.175131,-1.45816,-0.0509896,-0.615555,-0.274707,-1.19282,-0.242188,-0.206006,-0.0447305,-0.277784,-0.295378,-0.456357,-1.0432,0.0277715,-0.292431,0.0155668,-0.327379,-0.143887,-0.924652]

换句话说,a0 = 1.27274,a1 = 0.625272等

然后我们可以使用以下代码绘制图形。

function decision(x1::Float64, x2::Float64, a::Array{Float64})
    dot(a, [1, x1^1*x2^0, x1^0*x2^1, x1^2*x2^0, x1^1*x2^1, x1^0*x2^2, 
               x1^3*x2^0, x1^2*x2^1, x1^1*x2^2, x1^0*x2^3, x1^4*x2^0, x1^3*x2^1,
               x1^2*x2^2, x1^1*x2^3, x1^0*x2^4, x1^5*x2^0, x1^4*x2^1, x1^3*x2^2,
               x1^2*x2^3, x1^1*x2^4, x1^0*x2^5, x1^6*x2^0, x1^5*x2^1, x1^4*x2^2, 
               x1^3*x2^3, x1^2*x2^4, x1^1*x2^5, x1^0*x2^6])
end

plot(z = (x1,x2) -> decision(x1, x2, para), 
              x = linspace(-1.0, 1.5, 100),
              y = linspace(-1.0, 1.5, 100),
              Geom.contour(levels = [0.0]))

enter image description here

要使levels = [0.0]有效,我们需要明确提供参数x, y, z