[PYTHON] Dessinez un graphique avec PyQtGraph Partie 5-Augmentez l'axe Y

Partie 5 Augmenter l'axe Y

5.png

Supprimer les commentaires jusqu'à la partie 4

import sys
from PySide.QtCore import *
from PySide.QtGui import *
import pyqtgraph as pg


class GraphWindow(QMainWindow):

    def __init__(self, parent = None):
        
        super(GraphWindow, self).__init__(parent)
        
        pw = pg.PlotWidget(viewBox = pg.ViewBox(border = pg.mkPen(color='#000000'),
                                                invertX = False, invertY = False))

        self.setCentralWidget(pw)

        pw.setBackground("#FFFFFF00")

        pw.setMinimumSize(500, 400)
        pw.setMaximumSize(500, 400)

        ##5 Créez 3 plotItems et ViewBoxes et un 3e axe Y
        ##Définir GraphFrame
        ##Combinez plotItem et 3 ViewBoxes et le 3e axe Y en un seul graphique
        p1 = pw.plotItem
        p2 = pg.ViewBox()
        p3 = pg.ViewBox()
        ax3 = pg.AxisItem(orientation = 'right')
        self.setGraphFrameFont(p1, p2, p3, ax3)
        self.setGraphMultipleAxis(p1, p2, p3, ax3)

        ##Définir l'étiquette à 5 axes
        p1.setLabels(bottom = "Axe X", 
                     left = "Axe Y1", 
                     right = "Axe Y2")
        ax3.setLabel("Axe Y3")

        ##Définir la police de l'étiquette à 5 axes
        fontCss = {'font-family': "Times New Roman,Meilio", 'font-size': '10.5pt', "color": "black"}
        p1.getAxis('bottom').setLabel(**fontCss)
        fontCss["color"] = "red"
        p1.getAxis('left').setLabel(**fontCss)
        fontCss["color"] = "blue"
        p1.getAxis('right').setLabel(**fontCss)
        fontCss["color"] = "green"
        ax3.setLabel(**fontCss)

        ##5 Réglez la plage
        p1.setRange(xRange = (-2, 6), yRange = (-2, 6), padding = 0)
        p2.setRange(yRange = (-1, 5), padding = 0)
        p3.setRange(yRange = (0, 4), padding = 0)

        ##5 Réglez l'échelle
        p1.getAxis('bottom').setTickSpacing(major = 2.5, minor = 1)
        p1.getAxis('left').setTickSpacing(major = 2.5, minor = 1)
        p1.getAxis('right').setTickSpacing(major = 2.5, minor = 1)
        ax3.setTickSpacing(major = 2.5, minor = 1)
        
        ##5 Dessinez un graphique
        p1.addItem(pg.PlotCurveItem(x = [0, 1, 2, 3 ,4], 
                                    y = [0, 1, 2, 3 ,4], 
                                    pen = pg.mkPen(color = "r", style = Qt.SolidLine), 
                                    name = "plot1", 
                                    antialias = True))
        p2.addItem(pg.ScatterPlotItem(x = [0, 1, 2, 3 ,4], 
                                      y = [4, 3, 2, 1, 0], 
                                      symbol = "x", 
                                      pen = pg.mkPen(None), 
                                      brush = pg.mkBrush("b"),
                                      size = 7.5,
                                      name = "plot2", 
                                      antialias = True))
        p3.addItem(pg.PlotCurveItem(x = [0, 1, 2, 3 ,4], 
                                    y = [0, 4, 0, 4, 0], 
                                    pen = pg.mkPen(color = "g", style = Qt.DashLine),
                                    name = "plot3", 
                                    antialias = True))


    def setGraphFrameFont(self, p1, p2 = None, p3 = None, ax3 = None):
        font = QFont("Times New Roman", 7)

        p1.getAxis('bottom').setPen(pg.mkPen(color='#000000'))
        p1.getAxis('left').setPen(pg.mkPen(color='#000000'))
        p1.getAxis('bottom').setHeight(3.5 * 10.5)
        p1.getAxis('left').setWidth(4 * 10.5)

        #p1.getAxis('bottom').setLabel(**self.fontCss)
        p1.getAxis('bottom').tickFont = font
        #p1.getAxis('left').setLabel(**self.fontCss)
        p1.getAxis('left').tickFont = font

        if p2 != None:
            p1.getAxis('right').setPen(pg.mkPen(color='#000000'))
            p1.getAxis('right').setWidth(4 * 10.5)

            #p1.getAxis('right').setLabel(**self.fontCss)
            p1.getAxis('right').tickFont = font

        if p3 != None and ax3 != None:
            ax3.setPen(pg.mkPen(color='#000000'))
            ax3.setWidth(4 * 10.5)

            #ax3.setLabel(**self.fontCss)
            ax3.tickFont = font

    ##5 Créer plusieurs graphiques sur l'axe Y
    def setGraphMultipleAxis(self, p1, p2, p3 = None, ax3 = None):
        p1.showAxis('right')
        p1.scene().addItem(p2)
        p1.getAxis('right').linkToView(p2)
        p2.setXLink(p1)

        p2.sigRangeChanged.connect(lambda: p2.setGeometry(p1.vb.sceneBoundingRect()))
        
        if p3 != None and ax3 != None:
            spacer = QGraphicsWidget()
            spacer.setMaximumSize(15,15)
            p1.layout.addItem(spacer, 2, 3)

            p1.layout.addItem(ax3, 2, 4)
            p1.scene().addItem(p3)
            ax3.linkToView(p3)
            p3.setXLink(p1)
            
            p3.sigRangeChanged.connect(lambda: p3.setGeometry(p1.vb.sceneBoundingRect()))

Recommended Posts

Dessinez un graphique avec PyQtGraph Partie 5-Augmentez l'axe Y
Dessinez un graphique avec PyQtGraph Part 1-Drawing
Dessinez un graphique avec les paramètres PyQtGraph Partie 3-PlotWidget
Dessinez un graphique avec les paramètres PyQtGraph Part 4-PlotItem
Dessinez un graphique avec PyQtGraph Partie 6 - Affichage d'une légende
Tracez un graphe avec Julia + PyQtGraph (2)
Tracez un graphique avec Julia + PyQtGraph (1)
Dessinez un graphique avec Julia + PyQtGraph (3)
Dessinez un graphique avec PyQtGraph Partie 2 - Paramètres de tracé détaillés
Dessinez un graphique avec NetworkX
Dessinez un graphique avec networkx
Dessinez un graphique lâche avec matplotlib
Dessinez un graphique avec des pandas + XlsxWriter
Dessinez un graphique avec l'interface graphique PySimple
Compter la partie concaténée maximale d'un graphe aléatoire avec NetworkX
Dessinez une surface plane avec un graphique 3D matplotlib
Dessinez un graphique avec des étiquettes japonaises dans Jupyter
Tweet les prévisions météo avec le bot Partie 2
Comment dessiner un graphique à 2 axes avec pyplot
Dessinez un graphique en traitant avec Pandas groupby
[Python] Dessinez un graphe orienté avec Dash Cytoscape
Augmentez la taille de la police du graphique avec matplotlib
[Python] Comment dessiner un graphique linéaire avec Matplotlib
Étudier les mathématiques avec Python: dessiner un graphe sympy (scipy) avec matplotlib
[Visualisation] Je veux dessiner un beau graphique avec Plotly
Jouez avec une tortue avec des graphiques de tortue (partie 1)
Trouvez la valeur optimale de la fonction à l'aide d'un algorithme génétique (partie 2)
[Statistiques] Saisir l'image de la théorie de la limitation du pôle central avec un graphe
Dessinez un beau cercle avec numpy
Graphique d'appel de sortie avec PyCallGraph
J'ai essayé d'utiliser "Asciichart Py" qui peut dessiner un beau graphique sur la console avec Python.
Faisons un graphe avec python! !!
Faire un joli graphique avec plotly
Dessinez facilement une carte avec matplotlib.basemap
Calculer l'itinéraire le plus court d'un graphe avec la méthode Dyxtra et Python
(Matplotlib) Je veux dessiner un graphique avec une taille spécifiée en pixels
Comment dessiner un graphique à barres qui résume plusieurs séries avec matplotlib
Tweet la météo avec bot
[Python] Définissez la plage du graphique avec matplotlib
[PyQt] Afficher des graphiques multi-axes avec QtChart
Comment dessiner un graphique avec Matplotlib
Dessinez un cœur en rubis avec PyCall
Créer un graphique à l'aide du module Sympy
Rechercher le labyrinthe avec l'algorithme python A *
Dessiner un cœur avec Python Partie 2 (SymPy Edition)
Dessinez un ensemble de Mandelbrot avec Brainf * ck
Dessinez simplement un graphique en spécifiant un fichier
Créer un graphique avec des bordures supprimées avec matplotlib
Fabriquez un thermomètre avec Raspberry Pi et rendez-le visible sur le navigateur Partie 3
Dessinez une ligne de pliage / diagramme de dispersion avec python matplotlib pour fichier CSV (2 colonnes)
Dessinons la tension du multimètre numérique 34461A de l'instrument de mesure Keysight avec Circuit Python
Obtenez le cours de l'action d'une entreprise japonaise avec Python et faites un graphique
Un modèle qui identifie la guitare avec fast.ai