Visualization
There are three main functions in Cropbox used for visualization. For information regarding syntax, please check the reference.
plot()
The plot()
function is used to plot two-dimensional graphs.
Two Vectors
Let's start by making a simple plot by using two vectors of discrete values.
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plot(x, y)
Multiple Vectors
You can also plot multiple series, by using a vector of vectors.
plot(x, [x, y])
DataFrame
We can also make a plot using a DataFrame and its columns. Recall that the simulate()
function provides a DataFrame.
@system S(Controller) begin
x ~ advance
y1(x) => 2x ~ track
y2(x) => x^2 ~ track
end
df = simulate(S; stop=10)
p = plot(df, :x, [:y1, :y2])
plot!()
plot!()
is an extension of the plot()
function used to update an existing Plot
object p
by appending a new graph made with plot()
Example
@system S(Controller) begin
x ~ advance
y3(x) => 3x ~ track
end
df = simulate(S; stop=10)
plot!(p, df, :x, :y3)
visualize()
The visualize()
function is used to make a plot from an output collected by running simulations. It is essentially identical to running the plot()
function with a DataFrame from the simulate()
function, and can be seen as a convenient function to run both plot()
and simulate()
together.
Example
@system S(Controller) begin
x ~ advance
y1(x) => 2x ~ track
y2(x) => x^2 ~ track
end
v = visualize(S, :x, [:y1, :y2]; stop=10, kind=:line)
visualize!()
visualize!()
updates an existing Plot
object p
by appending a new graph generated with visualize()
.
Example
@system S(Controller) begin
x ~ advance
y3(x) => 3x ~ track
end
visualize!(v, S, :x, :y3; stop=10, kind=:line)
manipulate()
The manipulate
function has two different methods for creating an interactive plot.
manipulate(f::Function; parameters, config=())
Create an interactive plot updated by callback f. Only works in Jupyter Notebook.
manipulate(args...; parameters, kwargs...)
Create an interactive plot by calling manipulate with visualize as a callback.