I think this will be one of my last blog about plots because I’m hasty. I want to explore genetic algorithms based on Driving a car with genetic algorithm. Any way let’s dive in. The Jupyter notebooks for this blog is available here https://gitlab.com/data-science-with-julia/code/-/blob/master/plots.ipynb.

Plotting Sin and Cos

To start with let’s define θ to be from -2π to with steps of 0.01 as shown below:

θ = -2π : 0.01 : 2π

Output:

-6.283185307179586:0.01:6.276814692820414

Now lets plot cos and sin values of θ

plot(
    θ, [sin.(θ), cos.(θ)],
    title = "sin and cos plots",
    xlabel = "Radians",
    ylabel = "Amplitude",
    label = ["sin(θ)" "cos(θ)"],
    ylims = (-1.5, 1.5),
    xlims = (-7, 7)
)

Output:

svg

So, what just happened? We have a function called plot():

plot()

To that we pass the first argument to be θ:

plot(θ)

the second argument to be an array of sin and cos of θ:

plot(θ, [sin.(θ), cos.(θ)])

apart from that we pass the following attributes too:

  • title : Self explanatory
  • xlabel : The text that must appear for the x-axis
  • ylabel : The text that must appear for the y-axis
  • label : The legend of the curves shown in top right
  • xlims and ylims : The minimum and maximum of coordinates that needs to be displayed for the plot, these accepts Tuple as argument

Building a Plot

Its not that you have to create a plot all in a go, you can build it part by part, you can see blow that we plot sinof θ below, we have set linewidth = 3 so it appears nice and thick, we have set the color to be purple, and its label to be sin θ:

p = plot(θ, sin.(θ), color = "purple", linewidth = 3, label = "sin θ")

so you get a plot as shown:

svg

we have assigned the output of the above plot to a variable named p, so in the future this could be modified. Now lets add cos plot to p, for that look at the code below:

plot!(p, θ, cos.(θ), color = "red", linewidth = 3, label = "cos θ")

Output:

svg

so it is the same with just one difference, we are mutating p by passing it to the plot!() function. Notice the exclamation mark ! in the plot!() and it accepts a plot as its first argument which it changes. Now in the code below we further decorate p with title, labels and limits:

plot!(
    p,
    title = "sin and cos plots",
    xlabel = "Radians",
    ylabel = "Amplitude",
    ylims = (-1.5, 1.5),
    xlims = (-7, 7)
)

Output:

svg