Packages graphiques#

La gestion graphique ne fait pas partie intégrante de Julia il faut faire appel à des packages extérieurs et plusieurs choix sont possibles. On peut utiliser PyPlot.jl qui consiste à utiliser matplotlib avec Julia. Makie.jl est également de plus en plus populaire avec un beau rendu graphique et un choix de “backend” plus riche. La package est un peu plus difficile à utiliser mais offre beaucoup de possibilités.

Je vous propose ici la description et utilisation du package Plots

On peut l’utiliser avec différents “backend”, PyPlot.jl ou PlotlyJS.jl

Plots#

La syntaxe est très proche de celle de MATLAB. Par défaut le “backend” est GR.jl. Pour utiliser les autres il faut les installer.

(v1.1) pkg> add Plots
(v1.1) pkg> add PlotlyJS
(v1.1) pkg> add PyPlot
using Plots 

Pour changer le “backend”, il faut exécuter l’une des fonctions suivantes

plotlyjs()

ou

pyplot()
x = LinRange(0, 4π, 100)
plot(x, sin.(x), label="y = sin(x)")
using LaTeXStrings
x = LinRange(0, 1, 100)
plot(x,sin.(10*x))
plot!(x,cos.(10*x))
title!(L"y_1 = \sin(x) \qquad y_2 = \cos(x)")
xlabel!("x")
p = plot(layout=(2,1))
plot!(p[1,1], x, sin.(x), lc = :green, linewidth = 2.0)
title!(p[1,1], "tracé 1")
plot!(p[2,1], x, x, lc = :red)
title!(p[2,1], "tracé 2")
xlabel!("x")
ylabel!("y")
ylims!(p[1,1], (0,1))
contour(rand(50,50), colobar = true, aspect_ratio = :equal, size = (300,300))
?contour
search: contour contourf contour! contourf! contour3d contour3d! continue center
contour(x,y,z)
contour!(x,y,z)

Draw contour lines of the surface z.

Arguments

  • levels: Contour levels (if AbstractVector) or number of levels (if Integer)

  • fill: Bool. Fill area between contours or draw contours only (false by default)

Example

julia> x = y = range(-20, stop = 20, length = 100)
julia> contour(x, y, (x, y) -> x^2 + y^2)
palette(:rainbow)
_images/dddb0d44766151fe2c73f5e0e0954e189d2d7632ee5f5af452688dcf2bf11724.svg
surface(rand(50,50), palette = :rainbow)
x = LinRange(-2, 2, 21)
y = x
z = exp.(-x.^2 .- y'.^2)
contour(x, y, z, aspect_ratio = :equal)

v(x, y) = 0.1 .* [-y, x]

xs = [px for px in x for py in y]
ys = [py for px in x for py in y]

p = quiver!(xs, ys, quiver=v)
display(p)
@gif for i in 1:80
    plot(sin, 0, i * 2pi / 10)
    xlims!(0,50)
    ylims!(-1.5,1.5)
end when i > 30
[ Info: Saved animation to /Users/navaro/JuliaProjects/Julia_Introduction/tmp.gif