[解決済み] pyqtにmatplotlibを埋め込む方法 - for Dummies
2023-06-16 16:27:16
質問
私は現在、私がデザインしたpyqt4のユーザーインターフェイスにプロットしたいグラフを埋め込もうとしています。私はプログラミングがほとんど初めてなので、私が見つけた例の中で人々がどのように埋め込んでいるのかがわかりません。 この1つ(一番下にある) と あれ .
誰かがステップバイステップの説明、または少なくとも非常に小さな、非常に単純なコードを1つのpyqt4 GUIで例えばグラフとボタンを作成するだけで投稿できれば素晴らしいことです。
どのように解決するのですか?
実はそれほど複雑ではありません。関連するQtウィジェットは
matplotlib.backends.backend_qt4agg
.
FigureCanvasQTAgg
そして
NavigationToolbar2QT
は、通常必要なものです。これらは、通常のQtウィジェットです。他のウィジェットと同じように扱えます。以下は、非常にシンプルな例で
Figure
,
Navigation
と、ランダムなデータを描画するボタンが1つあります。説明のためにコメントをつけています。
import sys
from PyQt4 import QtGui
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar
from matplotlib.figure import Figure
import random
class Window(QtGui.QDialog):
def __init__(self, parent=None):
super(Window, self).__init__(parent)
# a figure instance to plot on
self.figure = Figure()
# this is the Canvas Widget that displays the `figure`
# it takes the `figure` instance as a parameter to __init__
self.canvas = FigureCanvas(self.figure)
# this is the Navigation widget
# it takes the Canvas widget and a parent
self.toolbar = NavigationToolbar(self.canvas, self)
# Just some button connected to `plot` method
self.button = QtGui.QPushButton('Plot')
self.button.clicked.connect(self.plot)
# set the layout
layout = QtGui.QVBoxLayout()
layout.addWidget(self.toolbar)
layout.addWidget(self.canvas)
layout.addWidget(self.button)
self.setLayout(layout)
def plot(self):
''' plot some random stuff '''
# random data
data = [random.random() for i in range(10)]
# create an axis
ax = self.figure.add_subplot(111)
# discards the old graph
ax.clear()
# plot data
ax.plot(data, '*-')
# refresh canvas
self.canvas.draw()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
main = Window()
main.show()
sys.exit(app.exec_())
編集 :
コメントとAPIの変更を反映し、更新しました。
-
NavigationToolbar2QTAgg
で変更NavigationToolbar2QT
-
直接インポートする
Figure
の代わりにpyplot
-
非推奨の置き換え
ax.hold(False)
をax.clear()
関連
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] Matplotlibでプロットを表示するのではなく、画像ファイルに保存する。
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】forループを使った辞書の反復処理
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
-
[解決済み] 認証プラグイン 'caching_sha2_password' はサポートされていません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 2つの線分が交差しているかどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonでコード行間にかかる時間を測定するには?
-
[解決済み] googletransがエラー 'NoneType' オブジェクトに 'group' 属性がない、と言って動かなくなった。
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] タプルのリストを複数のリストに変換するには?
-
[解決済み] Pandasの'Freq'タグにはどのような値が有効ですか?
-
[解決済み] オブジェクトのリストに特定の属性値を持つオブジェクトが含まれているかどうかをチェックする
-
[解決済み] PyQtアプリケーションのスレッド化。QtスレッドとPythonスレッドのどちらを使うか?
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?