Skip to content

Commit 5c4739b

Browse files
committed
Added support for direct plotting of math functions
1 parent cf6a123 commit 5c4739b

File tree

1 file changed

+25
-14
lines changed

1 file changed

+25
-14
lines changed

src/plot.jl

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,34 @@
11
pkgs = keys(Pkg.installed())
22

3+
function get_points(f::Function, options=Dict())
4+
opt = merge(["left"=>-10, "right"=>10, "step"=>0.5, "name"=>"$f"], options)
5+
n::Int = (opt["right"] - opt["left"]) / opt["step"] + 1
6+
X = Float64[0 for i in 1:n]
7+
Y = Float64[0 for i in 1:n]
8+
for i in 1:n
9+
x = opt["step"]*(i-1) + opt["left"]
10+
y = f(x)
11+
X[i] = round(x, 8)
12+
Y[i] = round(y, 8)
13+
end
14+
print(["x"=>X, "y"=>Y, "type"=>"scatter", "mode"=>"lines", "name"=>opt["name"]])
15+
return ["x"=>X, "y"=>Y, "type"=>"scatter", "mode"=>"lines", "name"=>opt["name"]]
16+
end
17+
18+
function plot(fs::Array{Function,1}, options=Dict())
19+
data = [get_points(f, options) for f in fs]
20+
return plot([data], options)
21+
end
22+
23+
function plot(f::Function, options=Dict())
24+
return plot([f], options)
25+
end
26+
327
if in("Polynomial", pkgs)
428
using Polynomial
5-
function get_points(p::Poly, left, right, step)
6-
n::Int = (right - left) / step + 1
7-
X = Float64[0 for i in 1:n]
8-
Y = Float64[0 for i in 1:n]
9-
for i in 1:n
10-
x = step*(i-1) + left
11-
y = polyval(p, x)
12-
X[i] = x
13-
Y[i] = y
14-
end
15-
return ["x"=>X, "y"=>Y, "type"=>"scatter", "mode"=>"lines", "name"=>"$p"]
16-
end
1729

1830
function plot{T<:Number}(ps::Array{Poly{T},1}, options=Dict())
19-
opt = merge(options, ["left"=>-10, "right"=>10, "step"=>0.5])
20-
data = [get_points(p, opt["left"], opt["right"], opt["step"]) for p in ps]
31+
data = [get_points(x->polyval(p,x), merge(["name"=>"$p"], options)) for p in ps]
2132
return plot([data], options)
2233
end
2334

0 commit comments

Comments
 (0)