La librería, Plots
, es una interface de visualización y una caja de herramientas. Nos permite usar el poder de muchas de las librerías de gráficos de Julia, i.e. motores, usando una sintaxis única.
Como principales ventajas podemos destacar:
Dialecto de gráficos universal. No importa el motor de gráficos que estemos usando, PyPlot, Gadfly, Plotly, PGFPlots,
etc, podemos usar un sólo dialecto para construir las gráficas.
Se puede cambiar el motor de gráficos con un sólo comando y no es necesario reescribir el código.
Es muy sencillo agregar capas, --anotaciones, leyendas, incluso gráficos adicionales superpuestos--, a un gráfico.
Para saber más: https://juliaplots.github.io/
In [1]:
ENV["PYTHON"] = "" # Declaramos la variable PYTHON nula, para reproducibilidad
Pkg.update() # Actualizamos la biblioteca
In [2]:
function p_it(p::String...)
# Instala el paquete 'p'
#
# Args:
# p: el nombre completo del paquete::String
#
# Returns:
# Mensaje de error o notifica de la instalación vía Base.Pkg.add
#
ENV["PYTHON"]=""
for i = 1:length(p)
if !contains(==, Pkg.available(), p[i])
println(p[i], ", no disponible.")
else
if !haskey(Pkg.installed(), p[i])
Pkg.add(p[i])
end
end
end
end
Out[2]:
Para saber más sobre la función, lo invitamos a consultar la libreta "Paquetes en Julia II":
In [3]:
p_it("Plots",
"PlotlyJS",
"PyPlot",
"GR",
"UnicodePlots",
"PGFPlots")
In [4]:
p_it("StatPlots", "PlotRecipes")
In [5]:
p_it("Rsvg", "Blink")
Una vez instalado, Blink(), es importante instalar su auxiliar:
In [6]:
using Blink # Cargamos el paquete
# Blink.AtomShell.install() # Instalamos auxiliar. ¡Ejecutar sólo una vez!
Referencia: http://spencerlyon.com/PlotlyJS.jl/
Nota:
La instalación de librerías es un proceso que requiere de 10 a 20 minutos. El resultado variará de acuerdo a su sistema operativo y la velocidad de su conexión a Internet.
Plots
Una vez instaladas la librerías, podemos proceder a usar Plots
con el motor de nuesta preferencia. Es importante señalar que:
GR
. plotly()
. Jupyter
o IJulia
, es necesario especificar el formato de salida. Les recomendamos SVG
o PNG
. Ejemplo:plot(rand(10), fmt = :svg)
In [7]:
using Plots # Cargamos librería
pyplot() # Definimos motor, PyPlot
Out[7]:
In [8]:
plot(Plots.fakedata(50, 5), # las abcisas y las ordenadas, respectivamente
w = 2, # Ancho de las líneas
fmt = :svg) # Opción para generar las notas
Out[8]:
In [9]:
#plotly() # ¡Pruebe diferentes motores!
histogram(randn(1000), # histograma
fmt = :svg) # Opción para generar las notas
Out[9]:
In [10]:
#plotly() # ¡Pruebe diferentes motores!
y = rand(100) # Cien números aleatorios
plot(0:10:100, # Iniciamos gráfica
rand(11,4), # Subconjuntos aleatorios
lab = "lines", # Texto de la leyenda
w = 3, # Ancho de las líneas
palette = :grays, # Paleta de color
fill = (0, :auto), # Área con color
α = 0.4, # Transparencia
fmt = :svg) # Opción para generar las notas
Out[10]:
Para modificar la gráfica, color en esta caso, basta con agregar "!
" al comando:
In [11]:
scatter!(y,
zcolor = abs(y - 0.5),
m = (:heat, 0.8, stroke(1, :green)),
ms = 10 * abs(y - 0.5) + 4,
lab = "grad",
fmt = :svg) # Opción para generar las notas
Out[11]:
In [12]:
n = 100
ts = linspace(0, 8π, n)
x = ts .* map(cos, ts)
y = (0.1ts) .* map(sin, ts)
z = 1:n
#plotlyjs() # Use este motor para hacer la gráfica interactiva
plot(x, y, z,
zcolor = reverse(z),
m = (10,0.8, :blues, stroke(0)),
leg = false,
cbar = true,w=5)
plot!(zeros(n),
zeros(n),
1:n,
w = 10,
fmt = :svg) # Opción para generar las notas
Out[12]:
In [13]:
# plotly() # ¡Pruebe diferentes motores!
x = 1:0.5:20
y = 1:0.5:10
f(x,y) = begin
(3x + y ^ 2) * abs(sin(x) + cos(y))
end
X = repmat(x', length(y), 1)
Y = repmat(y, 1, length(x))
Z = map(f, X, Y)
p1 = contour(x, y, f, fill=true)
p2 = contour(x, y, Z)
plot(p1, p2,
fmt = :svg) # Opción para generar las notas)
Out[13]:
https://juliaplots.github.io/basics/
https://juliaplots.github.io/backends/
In [14]:
versioninfo()
In [15]:
Dates.today()
Out[15]: