【发布时间】:2016-12-05 10:35:09
【问题描述】:
我在 Python 3.5、PyQt5 和 Matplotlib 1.5.3 中编写了一个程序,其中我使用了 pyplot 交互模式。这是一个最小的例子:
import numpy as np
import matplotlib.pyplot as plt
plt.ion()
fig = plt.figure()
ax = fig.add_subplot(111)
ax.grid(True)
for i in range (0, 10):
plt.scatter(i, np.sin(i))
fig.canvas.draw()
plt.ioff()
plt.show()
因为现在我在写GUI,我不能使用pyplot,因为它自己的eventloop会干扰Qt,所以我正在重写那部分代码,但我没有找到等效的交互模式使用 PyQt5 进入 Matplotlib 小部件。这是基本示例:
import sys
import time
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
import numpy as np
from PyQt5.QtWidgets import QApplication, QVBoxLayout, QWidget
if __name__ == '__main__':
fig = Figure()
canvas = FigureCanvas(fig)
ax = fig.add_subplot(111)
ax.grid(True)
for i in range (0, 10):
ax.scatter(i, np.sin(i))
fig.canvas.draw()
ui = QWidget()
toolbar = NavigationToolbar(canvas, ui, coordinates=True)
vbox = QVBoxLayout()
vbox.addWidget(canvas)
vbox.addWidget(toolbar)
ui.setLayout(vbox)
ui.show()
app = QApplication(sys.argv)
sys.exit(app.exec_())
作为第一个示例,我想在每次迭代时更新绘图。 如何修改代码?
谢谢! 西西奥
【问题讨论】:
-
“重复”问题及其答案显示了如何使用 动画,但没有显示使用非- 嵌入式 matplotlib 图。对于那些感兴趣的人,this 可能会有所帮助。
标签: python qt matplotlib pyqt5