"根据此SO note,嵌入时不应导入pyplot。它做了一些时髦的事情,例如使用自己的主循环运行自己的GUI。"
如果是这样,如何在不调用plt.axes()的情况下传递Slider所需的matplotlib.axes._axes.Axes参数? 在GUI based on matplotlib documentation中,我们[添加了以下内容以包含滑块]:
def compute_initial_figure(self):
ymax = 300
window_size=1
res= 0.1
ax= self.axes
t = np.arange(0.0, 100.0, 0.1)
s = np.sin(2*np.pi*t)
ax.plot(t, s)
ax.axis([0, window_size, -ymax, ymax])
ax.get_xaxis().get_major_formatter().set_useOffset(False)
axcolor = 'lightgoldenrodyellow'
axpos = plt.axes([.1, .1, 0.75, 0.05], axisbg=axcolor) #MAKES OWN FIG!
spos = Slider(axpos, 'Time', res, t[-1], valinit=0)
spos.on_changed(update)
axpos线使用plt并创建与Qt窗口分开的自己的图形。注意plt.axes返回一个matplotlib.axes._axes.Axes对象而不是matplotlib.axes._subplots.AxesSubplot对象。
类似问题:
When matplotlib is embedded in PyQt4 how are axes/subplots labelled without using pyplot?
Combining PyQt and Matplotlib
答案 0 :(得分:1)
plt.axes
函数通过获取当前数字然后调用figure.add_axes
将轴添加到当前数字。您不必获取当前数字,而是在创建时必须保留对该数字的引用。如果你看http://matplotlib.org/examples/user_interfaces/embedding_in_qt4.html,你可以看到如何创建一个数字。我会把这个例子作为一个起点。
因此,要保持对该图的引用,请将相关行更改为:
self.fig = Figure(figsize=(width, height), dpi=dpi)
然后像这样调用add_axes方法:
axpos = self.fig.add_axes([.1, .1, 0.75, 0.05], axisbg=axcolor)