[PYTHON] Zeichnen Sie ein Diagramm mit PyQtGraph Teil 6 - Anzeigen einer Legende

Teil 6 Anzeige der Legende

Ich mag die PyQtGraph-Legende nicht wirklich, weil sie unflexibel ist. ~~ Du hättest die Hintergrundfarbe nicht ändern können. ~~ ↑ Sie haben in den Kommentaren darauf hingewiesen. Sie können die Hintergrundfarbe selbst ändern, indem Sie die Bibliothek ändern (pyqtgraph \ graphicsItems \ LegendItem.py). Weitere Informationen finden Sie im Kommentarbereich.

6.png

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)

        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)

        p1.setLabels(bottom = "X-Achse", 
                     left = "Y1-Achse", 
                     right = "Y2-Achse")
        ax3.setLabel("Y3-Achse")

        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)

        p1.setRange(xRange = (-2, 6), yRange = (-2, 6), padding = 0)
        p2.setRange(yRange = (-1, 5), padding = 0)
        p3.setRange(yRange = (0, 4), padding = 0)

        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)
        
        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), 
                                      name = "plot2", 
                                      brush = pg.mkBrush("b"),
                                      size = 7.5,
                                      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))

        ##6 Legen Sie die Legende fest und zeigen Sie sie an
        legend = p1.addLegend(offset = (10, 10))
        fontCssLegend = '<style type="text/css"> p {font-family: Times New Roman,Meilio; font-size: 10.5pt; color: "#000000"} </style>'
        legend.addItem(pg.PlotCurveItem(pen = pg.mkPen(color = "r", style = Qt.SolidLine), antialias = True), 
                       name = fontCssLegend + '<p>plot1 (Plot 1)</p>')
        legend.addItem(pg.ScatterPlotItem(symbol = "x", pen = pg.mkPen(None), brush = pg.mkBrush("b"), size = 7.5, antialias = True), 
                       name = fontCssLegend + '<p>plot2 (Plot 2)</p>')
        legend.addItem(pg.PlotCurveItem(pen = pg.mkPen(color = "g", style = Qt.DashLine), antialias = True), 
                       name = fontCssLegend + '<p>Grundstück 3 (Grundstück 3)</p>')


    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


    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()))


if __name__ == '__main__':
    #Erstellen Sie eine Qt-Anwendung
    app = QApplication(sys.argv)
    #Formular erstellen und anzeigen
    mainWin = GraphWindow()
    mainWin.show()
    #Starten Sie die Hauptschleife von Qt
    sys.exit(app.exec_())

Recommended Posts

Zeichnen Sie ein Diagramm mit PyQtGraph Teil 6 - Anzeigen einer Legende
Zeichnen Sie ein Diagramm mit PyQtGraph Part 1-Drawing
Zeichnen Sie ein Diagramm mit den PyQtGraph Part 3-PlotWidget-Einstellungen
Zeichnen Sie ein Diagramm mit den Einstellungen von PyQtGraph Part 4-PlotItem
Zeichne ein Diagramm mit Julia + PyQtGraph (2)
Zeichne ein Diagramm mit Julia + PyQtGraph (1)
Zeichne ein Diagramm mit Julia + PyQtGraph (3)
Zeichnen Sie mit PyQtGraph Teil 5 ein Diagramm. Erhöhen Sie die Y-Achse
Zeichnen Sie ein Diagramm mit PyQtGraph Teil 2 - Detaillierte Ploteinstellungen
Zeichnen Sie mit networkx ein Diagramm
Zeichnen Sie mit matplotlib ein loses Diagramm
Zeichnen Sie ein Diagramm mit Pandas + XlsxWriter
Zeichnen Sie ein Diagramm mit der PySimple-Benutzeroberfläche
Zeichnen Sie eine flache Oberfläche mit einem Matplotlib-3D-Diagramm
Zeichnen Sie in Jupyter ein Diagramm mit japanischen Beschriftungen
Zeichnen Sie ein Diagramm, indem Sie es mit Pandas groupby verarbeiten
[Python] Zeichnen Sie mit Dash Cytoscape ein gerichtetes Diagramm
[Python] Wie zeichnet man mit Matplotlib ein Liniendiagramm?
Mathematik mit Python studieren: Zeichnen Sie mit matplotlib ein Sympy-Diagramm (Scipy-Diagramm)
[Visualisierung] Ich möchte mit Plotly ein schönes Diagramm zeichnen
Spiele mit einer Schildkröte mit Schildkrötengrafiken (Teil 1)
Zeichne einen schönen Kreis mit Numpy
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Machen Sie eine schöne Grafik mit Plotly
Zeichnen Sie einfach eine Karte mit matplotlib.basemap
[PyQt] Mehrachsendiagramme mit QtChart anzeigen
So zeichnen Sie ein Diagramm mit Matplotlib
(Matplotlib) Ich möchte ein Diagramm mit einer in Pixel angegebenen Größe zeichnen
Zeichne mit PyCall ein Herz in Ruby
Mit Python Teil 2 ein Herz zeichnen (SymPy Edition)
Zeichnen Sie ein Mandelbrot-Set mit Brainf * ck
So zeichnen Sie mit matplotlib ein Balkendiagramm, das mehrere Serien zusammenfasst
Zeichnen Sie einfach ein Diagramm, indem Sie eine Datei angeben
Erstellen Sie ein Diagramm mit Rändern, die mit matplotlib entfernt wurden
Zeichnen Sie in Python ein Diagramm einer quadratischen Funktion
Tweet die Wettervorhersage mit Bot Teil 2
Zeichnen Sie eine "Boobs-Kurve" in einem 3D-Diagramm (1).
Memo, mit dem ein Diagramm zum Plotten animiert wurde
[Python] Zeichne eine Mickey Mouse mit Turtle [Anfänger]
Zeichnen Sie eine "Boobs-Kurve" in einem 3D-Diagramm (2).
Ich habe mit Numpy eine Grafik mit Zufallszahlen erstellt
Zeichnen Sie mehrere Fotos in einem Diagramm aus mehreren Ordnern
Zeichne ein Diagramm mit Julia ... Ich habe eine kleine Analyse versucht
Wie man ein Schießspiel mit toio macht (Teil 1)
Visualisieren Sie mit Cytoscape 2 Eisenbahnstreckendaten als Grafik
"My Graph Generation Application" von Python (PySide + PyQtGraph) Teil 2
Zeichnen Sie gewaltsam so etwas wie ein Flussdiagramm mit Python, matplotlib
Ich möchte manuell eine Legende mit matplotlib erstellen
Erstellen Sie mit PyQt5 und PyQtGraph einen 3D-Modell-Viewer
"My Graph Generation Application" von Python (PySide + PyQtGraph) Teil 1
[Python] Wie zeichnet man mit Matplotlib ein Streudiagramm?
Datenvisualisierung mit Python - Die Methode zum gleichzeitigen Zeichnen von Attribut-basierten Diagrammen mit "Facet" ist zu praktisch