[PYTHON] [PyQt] Afficher des graphiques multi-axes avec QtChart

introduction

Jusqu'à présent, pyqtgraph était utilisé pour afficher et créer des graphiques en Python. Cependant, il semble qu'il n'ait pas été mis à jour au cours des 3 dernières années, donc je veux quand même passer à celui pris en charge par Qt, donc QtChart J'ai essayé d'utiliser /qtcharts-index.html).

environnement

Installation

$ pip install PyQt5

$ pip install PyQtChart

Échantillon créé

qchart_sample.png

J'ai créé quelque chose que l'axe X est le temps et l'axe Y est le courant / tension.

La source est la suivante.

qchart_example.py


import random
import sys

from PyQt5.QtChart import (QChart,
                           QChartView,
                           QLineSeries,
                           QValueAxis,
                           QDateTimeAxis)
from PyQt5.QtCore import (QDateTime,
                          Qt)
from PyQt5.QtGui import QPainter
from PyQt5.QtWidgets import QApplication


app = QApplication(sys.argv)

cur_series = QLineSeries()
vol_series = QLineSeries()
now = QDateTime.currentDateTime()

#Créez des données appropriées
for i in range(100):
    cur = 5 * random.random()
    vol = 20 * random.random()
    time = now.addSecs(i).toMSecsSinceEpoch()  #Traitement à ajouter à QLineSeries
    cur_series.append(time, cur)
    vol_series.append(time, vol)

chart = QChart()
chart.legend().hide()
chart.addSeries(cur_series)
chart.addSeries(vol_series)

#Créer un axe X
time_axis_x = QDateTimeAxis()
time_axis_x.setFormat("hh:mm:ss")
chart.addAxis(time_axis_x, Qt.AlignBottom)
cur_series.attachAxis(time_axis_x)
vol_series.attachAxis(time_axis_x)

#Créer l'axe Y1
cur_axis_y = QValueAxis()
cur_axis_y.setTitleText("Current[A]")
cur_axis_y.setLinePenColor(cur_series.pen().color())  #Rendre les couleurs de l'axe et du graphique identiques
cur_axis_y.setRange(0, 5)
chart.addAxis(cur_axis_y, Qt.AlignLeft)
cur_series.attachAxis(cur_axis_y)

#Créer l'axe Y2
vol_axis_y = QValueAxis()
vol_axis_y.setTitleText("Voltage[V]")
vol_axis_y.setLinePenColor(vol_series.pen().color())  #Rendre les couleurs de l'axe et du graphique identiques
vol_axis_y.setRange(0, 20)
chart.addAxis(vol_axis_y, Qt.AlignRight)
vol_series.attachAxis(vol_axis_y)

cur_vol_chart_view = QChartView()
cur_vol_chart_view.setChart(chart)
cur_vol_chart_view.setRenderHint(QPainter.Antialiasing)  #Pour afficher le graphique en douceur
cur_vol_chart_view.show()

sys.exit(app.exec_())

URL de référence

Recommended Posts

[PyQt] Afficher des graphiques multi-axes avec QtChart
Dessinez un graphique avec NetworkX
Dessinez un graphique avec networkx
Tracez un graphe avec Julia + PyQtGraph (2)
Dessinez un graphique lâche avec matplotlib
Tracez un graphique avec Julia + PyQtGraph (1)
Dessinez un graphique avec Julia + PyQtGraph (3)
Dessinez un graphique avec des pandas + XlsxWriter
Faisons un graphe avec python! !!
Faire un joli graphique avec plotly
Dessinez un graphique avec l'interface graphique PySimple
Exemple de programme pour afficher des vidéos avec PyQt
Dessinez un graphique avec PyQtGraph Part 1-Drawing
Créer un graphique avec des bordures supprimées avec matplotlib
Créez un environnement Python 3 avec pyenv sur Mac et affichez des graphiques Network X
Dessinez une surface plane avec un graphique 3D matplotlib
Dessinez un graphique avec des étiquettes japonaises dans Jupyter
Comment dessiner un graphique à 2 axes avec pyplot
J'ai créé une application graphique avec Python + PyQt5
Mémo qui a fait un graphique pour animer avec intrigue
Dessinez un graphique avec les paramètres PyQtGraph Partie 3-PlotWidget
Dessinez un graphique en traitant avec Pandas groupby
[Python] Dessinez un graphe orienté avec Dash Cytoscape
Affichage simple du graphique linéaire sur Jupyter Notebook
Dessinez un graphique avec les paramètres PyQtGraph Part 4-PlotItem
Dessinez un graphique avec PyQtGraph Partie 6 - Affichage d'une légende
J'ai fait un graphique de nombres aléatoires avec Numpy
[Ne pas se référer au 04.02.17] Afficher le capteur de température dans un graphique en temps réel avec rasberry pi 3
Dessinez un graphique avec PyQtGraph Partie 5-Augmentez l'axe Y
[Python] Comment dessiner un graphique linéaire avec Matplotlib
Visualisez les données d'itinéraires ferroviaires sous forme de graphique avec Cytoscape 2
Créer une visionneuse de modèle 3D avec PyQt5 et PyQtGraph
Dessinez un graphique avec PyQtGraph Partie 2 - Paramètres de tracé détaillés
Afficher le graphique lors de la modification des paramètres avec PySimpleGUI + Matplotlib
Format A4 avec python-pptx
Graphique de bande avec matplotlib
Affichage de la barre des tâches avec tqdm
Décorer avec un décorateur
Étudier les mathématiques avec Python: dessiner un graphe sympy (scipy) avec matplotlib
Essayez d'ouvrir une sous-fenêtre avec PyQt5 et Python
Comment afficher une liste des versions installables avec pyenv
[Visualisation] Je veux dessiner un beau graphique avec Plotly
Afficher la page Web avec FastAPI + uvicorn + Nginx (conversion SSL / HTTPS)