私はpython3で4つの異なるグラフ、速度、高さ、座標、角度の4つのグラフをプロットするGUIを作成しようとしています。今はそれぞれのレイアウトで図を描くことができます。しかし、私はどのように各グラフに異なる関数をプロットするのか分かりません。私はプロットするためにランダムに10点を生成する方法を使用しました。このメソッドが呼び出されると、4つのキャンバスに同じグラフがプロットされます。PyQt4の異なるキャンバスに異なるグラフをウィンドウでプロットする方法は?
私は、フィギュア(グラフごとに1つのプロット)にそれぞれ別の関数をプロットする方法があるのですか?**私はpython3にはかなり新しく、提供されたヘルプに感謝します。
可能であれば、各図のレイアウトが既に存在するので、図では多くのサブプロットを使用しないようにしたいと考えています。ここで
は現在のGUIは、私はランダムな点を生成し、テストメソッドを呼び出したときのように見えるものである、あなたはそれがすべての制約を追加する場合 the same graph are plotted in each canvasは、私もこのコードは、最終的になることを、言及することを見ることができます別のスレッドからのデータで更新されるグラフをプロットするために使用されます。
そして、ここのコードです:
from PyQt4 import QtGui
from .flight_dataUI import Ui_Dialog
import matplotlib.pyplot as plt
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar
import random
class FlightData(QtGui.QDialog, Ui_Dialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
self.setupUi(self)
self.figure = plt.figure() # FlightData.figure = matplotlib.pyplot.figure()
# Creates a figure widget self.name = FigureCanvas(self.figure)
self.speedGraph = FigureCanvas(self.figure)
self.heightGraph = FigureCanvas(self.figure)
self.mapGraph = FigureCanvas(self.figure)
self.angleGraph = FigureCanvas(self.figure)
# -------------------------------------------------------------
self.speedLayout.addWidget(self.speedGraph) # insert widget "speedGraph" in speedLayout
self.heightLayout.addWidget(self.heightGraph) # insert widget "heightGraph" in heightLayout
self.mapLayout.addWidget(self.mapGraph) # insert widget "mapGraph" in mapLayout
self.angleLayout.addWidget(self.angleGraph) # insert widget "angleGraph" in angleLayout
self.ax = self.figure.add_subplot(111)
self.ax.hold(False)
self.init_widgets()
def init_widgets(self):
self.analyseButton.clicked.connect(self.open_analysedata)
self.draw_plot()
def open_analysedata(self):
self.done(2) # Closes and delete Dialog window et and return the int 2 as a results in main_window.py
def draw_plot(self):
data = [random.random() for i in range(10)]
self.ax.plot(data, '-*')
こんにちは、お返事ありがとうございます。私はあなたのほとんどがコードを理解し、試してみることにしました。しかし、私はこのNameerrorを "NameError:name 'Figure'が定義されていません" – SirIguan
**編集:私の間違いは、私はmatplotlib.figureクラスから図をインポートしていないようです。コードは現在動作しており、私が望む限り、私はプロットを設定することができます。ありがとうございます!** – SirIguan
ああ、コピー貼り付けに失敗して申し訳ありません – tacaswell