如何在 Julia 中使用 Gadfly.jl 绘制线性函数?
How to plot a linear function using Gadfly.jl in Julia?
我想知道如何使用 Julia 包 Gadfly 绘制线性函数(比如 y = 3x + 2)。我想出的一种方法是在该线上绘制两个点,然后添加 Geom.line
.
using Gadfly
function f(x)
3 * x + 2
end
domains = [1, 100]
values = [f(i) for i in domains]
p = plot(x = domains, y = values, Geom.line)
img = SVG("test.svg", 6inch, 4inch)
draw(img, p)
有没有更好的画线的方法?我在 Gadfly 文档中找到了 Functions and Expressions 部分。我不确定如何将它与线性函数一起使用?
大多数绘图工具只接受 x
值列表和 y
值列表。这将创建一系列 (x,y)
点,然后可以将这些点绘制为单独的点,通过直线连接,通过最佳拟合模型连接,无论您要求什么。
线性函数完全由两个点定义,因此使用一对点和 Geom.line
选项就足够了。更一般地说,您会希望使用 linspace
为您的域生成积分。然后这些将被传递到您的函数中以生成范围值:
julia> using Gadfly
julia> f(x) = 3x + 2
f (generic function with 1 method)
julia> domain = linspace(-2,2,100);
julia> range1 = f(domain);
julia> p = plot(x=domain, y=range1, Geom.line)
julia> img = SVG("test.svg", 6inch, 4inch)
julia> draw(img, p)
正如我之前所说,一条线由两个点定义,因此在这种情况下我添加的所有额外点都是多余的。然而,更一般地说,您将需要更多的点来准确捕捉函数的形状:
julia> range2 = sin(domain);
julia> p2 = plot(x=domain, y=range2, Geom.line)
julia> img2 = SVG("test2.svg", 6inch, 4inch)
julia> draw(img2, p2)
您可以直接绘制函数,将其作为参数传递给 plot
命令(正如您在 documentation 中指出的那样),然后是 X
处的起点和终点轴(域):
julia> using Gadfly
julia> f(x) = 3x + 2
f (generic function with 1 method)
julia> plot(f, 1.0, 100.0)
更复杂的表达式可以用同样的方式绘制:
julia> f3(x) = (x >= 2.0) ? -2.0x+1.0 : 2.0x+1.0
f3 (generic function with 1 method)
julia> plot(f3, -5, 10)
如果你想在同一张图中绘制两个(或更多)函数,你可以传递一个函数数组作为第一个参数:
julia> plot([f, f3], -5, 10)
测试:Julia 版本 0.5.0
我想知道如何使用 Julia 包 Gadfly 绘制线性函数(比如 y = 3x + 2)。我想出的一种方法是在该线上绘制两个点,然后添加 Geom.line
.
using Gadfly
function f(x)
3 * x + 2
end
domains = [1, 100]
values = [f(i) for i in domains]
p = plot(x = domains, y = values, Geom.line)
img = SVG("test.svg", 6inch, 4inch)
draw(img, p)
有没有更好的画线的方法?我在 Gadfly 文档中找到了 Functions and Expressions 部分。我不确定如何将它与线性函数一起使用?
大多数绘图工具只接受 x
值列表和 y
值列表。这将创建一系列 (x,y)
点,然后可以将这些点绘制为单独的点,通过直线连接,通过最佳拟合模型连接,无论您要求什么。
线性函数完全由两个点定义,因此使用一对点和 Geom.line
选项就足够了。更一般地说,您会希望使用 linspace
为您的域生成积分。然后这些将被传递到您的函数中以生成范围值:
julia> using Gadfly
julia> f(x) = 3x + 2
f (generic function with 1 method)
julia> domain = linspace(-2,2,100);
julia> range1 = f(domain);
julia> p = plot(x=domain, y=range1, Geom.line)
julia> img = SVG("test.svg", 6inch, 4inch)
julia> draw(img, p)
正如我之前所说,一条线由两个点定义,因此在这种情况下我添加的所有额外点都是多余的。然而,更一般地说,您将需要更多的点来准确捕捉函数的形状:
julia> range2 = sin(domain);
julia> p2 = plot(x=domain, y=range2, Geom.line)
julia> img2 = SVG("test2.svg", 6inch, 4inch)
julia> draw(img2, p2)
您可以直接绘制函数,将其作为参数传递给 plot
命令(正如您在 documentation 中指出的那样),然后是 X
处的起点和终点轴(域):
julia> using Gadfly
julia> f(x) = 3x + 2
f (generic function with 1 method)
julia> plot(f, 1.0, 100.0)
更复杂的表达式可以用同样的方式绘制:
julia> f3(x) = (x >= 2.0) ? -2.0x+1.0 : 2.0x+1.0
f3 (generic function with 1 method)
julia> plot(f3, -5, 10)
如果你想在同一张图中绘制两个(或更多)函数,你可以传递一个函数数组作为第一个参数:
julia> plot([f, f3], -5, 10)
测试:Julia 版本 0.5.0