Utilisez la bibliothèque de création de graphiques Plotly pour créer des graphiques qui fluctuent en temps réel. Le code a été téléchargé sur GitHub. https://github.com/bridget462/plotly_live_graph/blob/master/plotly_live_graph.ipynb
Plotly est une bibliothèque qui permet de créer facilement de beaux graphiques.
Vous pouvez créer un graphique comme celui-ci avec les paramètres par défaut
Plotly vous permet de créer des graphiques interactifs. Par exemple, si vous passez la souris, la valeur des données à proximité s'affiche et vous pouvez effectuer un zoom avant / arrière.
En fait, je voulais mettre un graphique dans l'article de Qiita, mais je ne pouvais pas mettre de graphique dans un fichier html interactif, donc je posterai une vidéo.
Il existe de nombreux articles sur la façon de créer différents types de graphiques dans Plotly, mais il y a peu d'explications sur la façon de mettre à jour les graphiques en temps réel, je vais donc les résumer ici. Dans cet article, nous utiliserons des nombres aléatoires pour créer un graphique qui reflète l'évolution des données en temps réel. Si vous remplacez cette partie aléatoire par des données de mesure, vous pouvez visualiser les données en temps réel.
Graphique en temps réel à créer. Une opération interactive était possible même avec des graphiques en temps réel.
Écrivez le code sur le jupyter notebook
.
Tout d'abord, importez la bibliothèque.
# importing libraries
import plotly.graph_objects as go # to make a graph
import numpy as np # to generate test data
La procédure de création d'un graphique en temps réel avec plotly est à peu près:
1.Faites un widget de figure 2. Ajouter des données au widget de la figure 3. Reportez-vous au widget de la figure pour mettre à jour les données
est.
# creating a figure widget. this will be updated in later cells
fig = go.FigureWidget()
fig
Lorsque j'exécute ce code sur le jupyter notebook
, je vois un graphique vide dans la sortie de la cellule.
Nous mettrons à jour la «fig» créée ici dans d'autres cellules. Les mises à jour sont reflétées en temps réel.
# let's add plot. add ; at the end of the code to ommit the output in this cell,
# because the figure widget above will be updated instead
N = 100 # data size
x = np.linspace(0, 20, N)
y = np.random.rand(N)
fig.add_scatter(x=x, y=y);
À titre d'exemple, ajoutons des données qui prennent un nombre aléatoire de 0 à 1 sur l'axe des x et fixé sur l'axe des y.
Ceci est dû au fait que le dernier point-virgule ;
de fig.add_scatter (x = x, y = y);
ne duplique pas le graphique.
S'il n'y a pas de ;
, le graphique avec les données ajoutées sera également affiché sous la cellule exécutée, mais ce n'est pas nécessaire car le graphique qui a créé le widget de figure sera mis à jour.
# to update the plot, take the correct reference by fig.data[i] where i is the order which you added the plot
# in this example, let's modefiy the first scatter plot (fig.data[0])
# getting reference from the graph
first_scatter_plot = fig.data[0]
# assine new random values. as soon as this code is excuted, the graph above will be updated.
first_scatter_plot.y = np.random.rand(N)
C'est une image pour mettre à jour les données ajoutées en 2. Pour faire référence aux données ajoutées en premier avec fig.add_scatter ()
, écrivez fig.data [0]
.
Si vous avez ajouté d'autres données, vous devez vous souvenir de l'ordre dans lequel vous les avez ajoutées (voir fig.data [1]
pour les secondes données ajoutées).
Mettons à jour le graphique en utilisant pendant quelques minutes pour mettre à jour le graphique plusieurs fois. Les titres des cellules ci-dessous sont également modifiés pour indiquer combien de fois ils ont été mis à jour.
# let's update both title and the y data at the same time
FRAME = 1000 # how many times which update the graph
first_scatter_plot = fig.data[0] # getting reference from the graph
for i in range(FRAME):
first_scatter_plot.y = np.random.rand(N) # updating y data
fig.update_layout(title=f'FRAME: {i + 1}');
Une fois exécuté, vous pouvez créer un graphique qui change comme la vidéo au début de l'article.
D'autres codes tels que la définition de la plage d'affichage de l'axe y et l'enregistrement du graphique peuvent être trouvés dans les notes sur GitHub, veuillez donc vous y référer si vous êtes intéressé. https://github.com/bridget462/plotly_live_graph/blob/master/plotly_live_graph.ipynb
Recommended Posts