matplotlib और पारदर्शिता आंकड़ा



background pyqt (1)

समस्या इसलिए होती है क्योंकि पृष्ठभूमि छवि विजेट के पैलेट के रूप में सेट की जाती है। इससे कैनवास को पैलेट के वारिस का कारण बनता है और इसलिए कैनवास के पास पृष्ठभूमि के रूप में छवि होगी, किसी भी तरह विजेट की पृष्ठभूमि को ओवरलेइंग करना होगा

एक समाधान कैनवास की पृष्ठभूमि को पारदर्शी सेट करना होगा। ऐसा करने का एक आसान तरीका स्टाइल शीट्स हैं

self.canvas.setStyleSheet("background-color:transparent;")

ध्यान दें कि यह पैच के चेहरे को सेट करने के समान नहीं है। इस आकृति की एक पृष्ठभूमि है, जो कि मटप्ललिब के अंदर नियंत्रित होती है, लेकिन कैनवास, एक PyQt ऑब्जेक्ट होने के कारण पृष्ठभूमि भी है।

पूर्ण उदाहरण:

import sys, os
from PyQt4.QtCore import Qt
from PyQt4.QtGui import *

import matplotlib
matplotlib.use('Qt4Agg') 
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar
from matplotlib.figure import Figure
import matplotlib.pyplot as plt
plt.rcParams['xtick.color'] ="w"
plt.rcParams['ytick.color'] ="w"
plt.rcParams['font.size'] = 14


class SecondWindow(QWidget):
    def __init__(self, parent=None):
        super(SecondWindow, self).__init__(parent)

        # CREATE FIGURE AND SETTINGS
        self.figure = plt.figure()
        self.figure.patch.set_facecolor("None")
        self.canvas = FigureCanvas(self.figure)
        self.axes = self.figure.add_subplot(111)
        self.axes.patch.set_alpha(0.5)

        ###### Make the background of the canvas transparent
        self.canvas.setStyleSheet("background-color:transparent;")

        self.p = QPalette()
        self.p.setBrush(QPalette.Background, QBrush(QPixmap("house.png")))
        self.setPalette(self.p)

        self.setLayout(QVBoxLayout())
        self.layout().addWidget(self.canvas,1)
        self.layout().setContentsMargins(50, 50, 50, 50)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    form = SecondWindow()
    form.show()
    sys.exit(app.exec_())

जो तब की तरह दिख सकता है

मैं Python 3.6 साथ matplotlib पुस्तकालय और PyQt5 साथ काम कर रहा हूं। मैं एक खिड़की में एक आकृति जोड़ूंगा, और मैं इस आकृति की पृष्ठभूमि को पारदर्शी बनाना चाहता हूं क्योंकि मैं खिड़की की पृष्ठभूमि में एक छवि जोड़ता हूं। लेकिन, यह आंकड़ा वास्तव में पारदर्शी नहीं है, यह विंडो की पृष्ठभूमि की छवि को डुप्लिकेट करता है। उदाहरण के लिए, कोई दो साल पहले समान समस्या से संबंधित है: matplotlib और pyqt4 पारदर्शी पृष्ठभूमि

यहाँ एक काम उदाहरण है (एक पृष्ठभूमि के साथ जो काला है लेकिन यह आंकड़ा काला नहीं है):

import sys, os
from PyQt5.QtCore import Qt
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

import matplotlib
matplotlib.use('Qt5Agg') # Make sure that we are using QT5
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
from matplotlib.figure import Figure
import matplotlib.pyplot as plt

class SecondWindow(QWidget):
    def __init__(self, parent=None):
        super(SecondWindow, self).__init__(parent)
        self.setupUi(self)

    def setupUi(self, Form):
        # WINDOW SETTINGS
        Form.setWindowTitle('Hello')
        self.p = QPalette()
        self.pixmap = QPixmap(os.getcwd() + "/logo.png").scaled(self.size(), Qt.IgnoreAspectRatio, Qt.SmoothTransformation)
        self.p.setBrush(QPalette.Background, QBrush(self.pixmap))
        self.setPalette(self.p)

        # CREATE FIGURE AND SETTINGS
        self.figure = plt.figure()
        self.figure.patch.set_facecolor('None')
        self.figure.patch.set_alpha(0)
        self.canvas = FigureCanvas(self.figure)
        self.axes = self.figure.add_subplot(111)

        # WINDOW LAYOUT (with H1 and H2)
        self.setLayout(QVBoxLayout())
        self.layout().addWidget(self.canvas,1)
        self.layout().setContentsMargins(50, 50, 50, 50)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    form = SecondWindow()
    form.show()
    sys.exit(app.exec_())

मैं लंबे घंटों के दौरान उत्तर खोजता हूं, लेकिन अभी तक समाधान नहीं मिला। किसी भी मदद के लिए धन्यवाद ला सकते हैं!

  • ऑपरेटिंग सिस्टम: विंडोज 7 प्रो
  • Matplotlib संस्करण: 2.0.2 (एनाकोंडा के माध्यम से इंस्टॉल किया जाता है, कंडो स्थापित करें मटप्ललिब - चैनल कॉनडा-फोर्ज)
  • पायथन संस्करण: पायथन 3.6
  • एनाकोंडा 3




transparent