Matplotlibキャンバスのインスタンスをpyqtに埋め込みます-プロットが表示されません

モリッツ

私は例をできるだけ短くするように努めました。SOにも同様の質問があります。上記の質問で提供された回答とは対照的に、コードを再利用できるようにMatplotlibFigureクラスを定義したいと思います。self.figure = MatplotlibFigure()関数のようにFigureのインスタンスへの参照をmake_tab1追加self.figureし、に追加しましたsplitterナビゲーションツールバーを使用して図を保存できるため、押しボタンは機能しているようです。ただし、軸はGUIに表示されません。

軸が表示されないのはなぜですか?

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton, QWidget, QAction, QTabWidget, QVBoxLayout,\
                            QHBoxLayout, QGridLayout, QSplitter, QFrame, QTextEdit, QFileDialog, QGroupBox,\
                            QButtonGroup, QLabel, QRadioButton

from PyQt5 import QtCore

import matplotlib
from matplotlib import figure
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar

class MatplotlibFigure(QWidget):

    # constructor
    def __init__(self):
        super().__init__()
        #self.layout = QBoxLayout()
        self.figure = matplotlib.figure.Figure()
        self.canvas = FigureCanvas(self.figure)
        self.toolbar = NavigationToolbar(self.canvas, self)
        #self.layout.addWidget(self.canvas)

    def plot(self):
        self.figure.clf()
        ax = self.figure.add_subplot(111)
        x = [i for i in range(100)]
        y = [i**0.5 for i in x]
        ax.plot(x, y, 'g*-')
        self.canvas.draw_idle()
        print('PLOTTED')


class MainApp(QMainWindow):
    """ This creates the main Window and configures its look
    """
    def __init__(self):
        '''
        Initializes the class with standard parameters
        '''
        super().__init__()
        self.title = 'Data Analysis App'

        # start at top left corner of the screen
        self.left = 0
        self.top = 0

        # set the window height and width
        self.width = 1280
        self.height = 780

        # set the styles of fonts etc.
        self.setStyleSheet('font-size: 16pt')

        # call the makeUI method
        self.makeUI()

    def makeUI(self):
        # set window geometry
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        # generate the tab layout
        self.table_widget = MyTableWidget()
        self.setCentralWidget(self.table_widget)

        # apparently we have to call the show method in order to show it
        self.show()


class MyTableWidget(QWidget):
    """
    Initializes the tab layout
    """

    def __init__(self):
        super().__init__()
        self.layout = QVBoxLayout(self)

        # initialize the tab screens
        self.tabs = QTabWidget()

        # add the tab screens to the tab widget
        self.tabs.resize(600, 600)

        # make the layout of the tabs
        self.make_tab1()

        # initialize the tabs
        self.layout.addWidget(self.tabs)
        self.setLayout(self.layout)

    def make_tab1(self):
        """Style of tab 1 is created here"""

        '''Defines master layout of tab1'''
        tab1 = QWidget()
        tab1.layout = QHBoxLayout()

        '''Button Section'''

        # converts the data into excel and pandas dataframe
        btn_plot_data = QPushButton('Plot data')
        btn_plot_data.clicked.connect(self.plot_data)


        '''Button layout section'''
        btn_layout = QVBoxLayout()
        btn_layout.addWidget(btn_plot_data)
        btn_layout.addStretch(1)

        '''Page layout section '''

        left = QFrame()
        left.setLayout(btn_layout)

        self.figure = MatplotlibFigure()

        # combine the buttons and the canvas in a splitter layout
        splitter1 = QSplitter(QtCore.Qt.Horizontal)
        splitter1.addWidget(left)
        splitter1.addWidget(self.figure)
        splitter1.setSizes([5, 400])


        # add the last splitter to the layout
        tab1.layout.addWidget(splitter1)
        tab1.setLayout(tab1.layout)
        self.tabs.addTab(tab1, 'Get Data Module')

    ''' Methods section
    '''
    def plot_data(self):
        self.figure.plot()


if __name__ == '__main__':
    """ This code block is always the same and makes sure that e.g. STRG+C kills the window etc.
    """
    app = QApplication(sys.argv)
    ex = MainApp()
    sys.exit(app.exec())
erocoar

MatplotlibFigureクラスのレイアウトを設定するのを忘れました(これは、キャンバスではなく、QWidgetであることに注意してください)。

def __init__(self):
    super().__init__()
    #self.layout = QBoxLayout()
    self.figure = matplotlib.figure.Figure()
    self.canvas = FigureCanvas(self.figure)
    self.toolbar = NavigationToolbar(self.canvas, self)

    layout = QVBoxLayout(self)
    layout.addWidget(self.toolbar)
    layout.addWidget(self.canvas)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

pyqtに埋め込まれた複数のmatplotlibキャンバスは、マウスオーバーでサイズを変更します

分類Dev

ArduinoからのMatplotlibライブプロットデータをtkinterキャンバスに埋め込む

分類Dev

matplotlibをtkinterキャンバスに埋め込むと、2つのウィンドウが開きます

分類Dev

Matplotlibキャンバスがwxパネルに埋め込まれていません

分類Dev

Matplotlib の図/プロット/キャンバス/レイアウトはボタンを非表示にします

分類Dev

HTMLキャンバスに画像を読み込めません

分類Dev

日付の埋め込みドキュメントインデックスは使用されません

分類Dev

キャンバスエンジンとタイルマップエディタを使用すると、「Uncaught TypeError:Undefinedのプロパティ 'firstgid'を読み取れません」が表示されます。

分類Dev

MacplotlibプロットがMac OSXに表示されませんか?

分類Dev

カスタムクラスのドロップダウンリストにEDStarRatingが表示されませんか?

分類Dev

海のプロットが表示されていません

分類Dev

キャンバスコントロールにコントロールの内容を表示できませんが、画像が表示されます

分類Dev

番号インデックスを使用せずに、mongodbnodejsで二重にネストされた埋め込みドキュメントを更新します

分類Dev

ブレークポイントに基づいて非表示/表示された場合、ブートストラップ行が画面の幅を埋めません

分類Dev

Jenkinsの埋め込み可能なビルドステータスアイコンは表示されません

分類Dev

マングースの埋め込みドキュメントからのインデックスパスの自動作成をオフにしますか?

分類Dev

matplotlibキャンバスを埋め込んだQt4アプリケーションでマウスイベントを接続する

分類Dev

スケーリングの背景パターンはhtml5キャンバスタグを埋めます

分類Dev

IEは、埋め込まれたswfsをインターネットにロードできませんが、ローカルでアクセスできます。

分類Dev

同じビューとpushObjectメソッドの多くのインスタンスを埋め込みます

分類Dev

スタートアップ時にプログラムでタブバーのタイトルを5つのタブバーアイテムに設定します。そのうちの4つはナビゲーションコントローラーに埋め込まれていますが、1つは埋め込まれていません。Objective C

分類Dev

tkinterキャンバスに埋め込まれたタートルフレームの内容をコピーする方法

分類Dev

OSGI宣言型サービスバンドルの埋め込みは正常に機能しますが、出力は表示されません

分類Dev

WAMPを使用してローカルホストにMagento2をインストールすると、バックエンドのページが見つかりません。フロントエンドのスタイルが表示されません。

分類Dev

VirtualBoxでUbuntuを起動するとログイン画面が表示されますが、ログインに成功するとデスクトップが読み込まれません

分類Dev

キャンバスをfabricjsに埋め込まれた画像base64でSVGに変換する方法

分類Dev

周囲のテキストとインラインで<Link>が埋め込まれた<div>を表示する

分類Dev

mongodbの埋め込みドキュメントに一意のインデックスを確保する

分類Dev

値を取得した後、ドロップダウンテキストが表示されませんでした

Related 関連記事

  1. 1

    pyqtに埋め込まれた複数のmatplotlibキャンバスは、マウスオーバーでサイズを変更します

  2. 2

    ArduinoからのMatplotlibライブプロットデータをtkinterキャンバスに埋め込む

  3. 3

    matplotlibをtkinterキャンバスに埋め込むと、2つのウィンドウが開きます

  4. 4

    Matplotlibキャンバスがwxパネルに埋め込まれていません

  5. 5

    Matplotlib の図/プロット/キャンバス/レイアウトはボタンを非表示にします

  6. 6

    HTMLキャンバスに画像を読み込めません

  7. 7

    日付の埋め込みドキュメントインデックスは使用されません

  8. 8

    キャンバスエンジンとタイルマップエディタを使用すると、「Uncaught TypeError:Undefinedのプロパティ 'firstgid'を読み取れません」が表示されます。

  9. 9

    MacplotlibプロットがMac OSXに表示されませんか?

  10. 10

    カスタムクラスのドロップダウンリストにEDStarRatingが表示されませんか?

  11. 11

    海のプロットが表示されていません

  12. 12

    キャンバスコントロールにコントロールの内容を表示できませんが、画像が表示されます

  13. 13

    番号インデックスを使用せずに、mongodbnodejsで二重にネストされた埋め込みドキュメントを更新します

  14. 14

    ブレークポイントに基づいて非表示/表示された場合、ブートストラップ行が画面の幅を埋めません

  15. 15

    Jenkinsの埋め込み可能なビルドステータスアイコンは表示されません

  16. 16

    マングースの埋め込みドキュメントからのインデックスパスの自動作成をオフにしますか?

  17. 17

    matplotlibキャンバスを埋め込んだQt4アプリケーションでマウスイベントを接続する

  18. 18

    スケーリングの背景パターンはhtml5キャンバスタグを埋めます

  19. 19

    IEは、埋め込まれたswfsをインターネットにロードできませんが、ローカルでアクセスできます。

  20. 20

    同じビューとpushObjectメソッドの多くのインスタンスを埋め込みます

  21. 21

    スタートアップ時にプログラムでタブバーのタイトルを5つのタブバーアイテムに設定します。そのうちの4つはナビゲーションコントローラーに埋め込まれていますが、1つは埋め込まれていません。Objective C

  22. 22

    tkinterキャンバスに埋め込まれたタートルフレームの内容をコピーする方法

  23. 23

    OSGI宣言型サービスバンドルの埋め込みは正常に機能しますが、出力は表示されません

  24. 24

    WAMPを使用してローカルホストにMagento2をインストールすると、バックエンドのページが見つかりません。フロントエンドのスタイルが表示されません。

  25. 25

    VirtualBoxでUbuntuを起動するとログイン画面が表示されますが、ログインに成功するとデスクトップが読み込まれません

  26. 26

    キャンバスをfabricjsに埋め込まれた画像base64でSVGに変換する方法

  27. 27

    周囲のテキストとインラインで<Link>が埋め込まれた<div>を表示する

  28. 28

    mongodbの埋め込みドキュメントに一意のインデックスを確保する

  29. 29

    値を取得した後、ドロップダウンテキストが表示されませんでした

ホットタグ

アーカイブ