Ce notebook est une très courte introduction à plotly. Quelques liens utiles :
Important : Par défaut plotly communique avec ses serveurs pour proposer des
sercices collaboratifs et d'intégrations web. Pour éviter, si besoin, se passage
par les serveurs plotly, il faudra penser à utiliser le mode offline
.
import plotly
import plotly.graph_objs as go
import numpy as np
# mode offline
plotly.offline.init_notebook_mode()
On va tracer la fonction $S(t)$ et son envelope :
$$ S(t) = \sin(2\,t) \,e^{-0.04\, t} $$def signal(t):
return np.sin(2 * t) * np.exp(-4e-2 * t)
def envelope(t):
return np.exp(-4e-2 * t)
trace
Data
et un Layout
Data
sont des listes de trace
clef=valeur
t = np.linspace(0, 80, 200)
trace = go.Scatter(
x = t,
y = signal(t),
)
data = go.Data([trace])
plotly.offline.iplot(data)
plotly.plotly.image.save_as(data, "/Users/gvallver/git/python_sciences/plotly/graph1.png")
Il faut ajouter des traces :
t = np.linspace(0, 80, 200)
trace = go.Scatter(
x = t,
y = signal(t)
)
envp = go.Scatter(
x = t,
y = envelope(t),
line = go.Line(
color = "red",
dash = "dash"
)
)
envm = go.Scatter(
x = t,
y = -envelope(t),
line = go.Line(
color = "red",
dash = "dash"
)
)
data = go.Data([trace, envp, envm])
plotly.offline.iplot(data)
plotly.plotly.image.save_as(data, "/Users/gvallver/git/python_sciences/plotly/graph2.png")
On ajoute un layout.
t = np.linspace(0, 80, 200)
trace = go.Scatter(
x = t,
y = signal(t)
)
envp = go.Scatter(
x = t,
y = envelope(t),
line = go.Line(
color = "red",
dash = "dash"
)
)
envm = go.Scatter(
x = t,
y = -envelope(t),
line = go.Line(
color = "red",
dash = "dash"
)
)
# on regroupe les traces dans l'objet Data
data = go.Data([trace, envp, envm])
# on s'occupe de la mise en forme globale via le Layout
layout = go.Layout(
title = "Ma super fonction amortie",
xaxis = go.XAxis(
title = "temps (s)"
),
yaxis = go.YAxis(
title = "Signal (ua)"
)
)
# la figure est un objet Data + un objet Layout
figure = go.Figure(data=data, layout=layout)
plotly.offline.iplot(figure)
plotly.plotly.image.save_as(figure, "/Users/gvallver/git/python_sciences/plotly/graph3.png")
Il suffit de donner les noms, vous avez du remarquer que la légende est déjà présente par défaut.
t = np.linspace(0, 80, 200)
trace = go.Scatter(
x = t,
y = signal(t),
name = "signal" # nom de la trace
)
envp = go.Scatter(
x = t,
y = envelope(t),
name = "envelope", # nom de la trace
line = go.Line(
color = "red",
dash = "dash"
)
)
envm = go.Scatter(
x = t,
y = -envelope(t),
showlegend = False,
line = go.Line(
color = "red",
dash = "dash"
)
)
data = go.Data([trace, envp, envm])
layout = go.Layout(
title = "Ma super fonction amortie",
xaxis = go.XAxis(
title = "temps (s)"
),
yaxis = go.YAxis(
title = "Signal (ua)"
)
)
figure = go.Figure(data=data, layout=layout)
plotly.offline.iplot(figure)
plotly.plotly.image.save_as(figure, "/Users/gvallver/git/python_sciences/plotly/graph4.png")
L'échelle des axes est définie dans le Layout via les objets XAxis et YAxis. Dans plotly chaque élément du graphique a un objet qui lui est propre qui se trouve dans plotly.graphical_objs
.
t = np.linspace(0, 80, 200)
trace = go.Scatter(
x = t,
y = signal(t),
name = "signal"
)
envp = go.Scatter(
x = t,
y = envelope(t),
name = "envelope",
line = go.Line(
color = "red",
dash = "dash"
)
)
envm = go.Scatter(
x = t,
y = -envelope(t),
showlegend = False,
line = go.Line(
color = "red",
dash = "dash"
)
)
data = go.Data([trace, envp, envm])
layout = go.Layout(
title = "Ma super fonction amortie",
xaxis = go.XAxis(
title = "temps (s)",
range = [0, 40]
),
yaxis = go.YAxis(
title = "Signal (ua)",
range = [-1.2, 1.5]
)
)
figure = go.Figure(data=data, layout=layout)
plotly.offline.iplot(figure)
plotly.plotly.image.save_as(figure, "/Users/gvallver/git/python_sciences/plotly/graph5.png")
En conclusion : à vous de jouer et comme pour matplotlib, rendez-vous sur la la galerie.