matplotlib和子图属性

时间:2016-07-29 15:39:58

标签: python matplotlib

我将一个matplotlib图添加到画布中,以便我可以在我的应用程序中将它与pyqt集成。我正在环顾四周,使用plt.add_subplot(111)似乎是要走的路(?)但是我无法在子剧情中添加任何属性,因为我可以使用"普通"积

图设置

self.figure1 = plt.figure()
self.canvas1 = FigureCanvas(self.figure1)
self.graphtoolbar1 = NavigationToolbar(self.canvas1, frameGraph1)

hboxlayout = qt.QVBoxLayout()

hboxlayout.addWidget(self.graphtoolbar1)
hboxlayout.addWidget(self.canvas1)

frameGraph1.setLayout(hboxlayout)

创建子图并添加数据

df = self.quandl.getData(startDate, endDate, company)

ax = self.figure1.add_subplot(111)
ax.hold(False)
ax.plot(df['Close'], 'b-')
ax.legend(loc=0)
ax.grid(True)

我想设置x和y标签,但如果我ax.xlabel("Test")

AttributeError: 'AxesSubplot' object has no attribute 'ylabel'

如果我不使用子图

,我可以这样做
plt.figure(figsize=(7, 4))
plt.plot(df['Close'], 'k-')
plt.grid(True)
plt.legend(loc=0)
plt.xlabel('value')
plt.ylabel('frequency')
plt.title('Histogram')
locs, labels = plt.xticks()
plt.setp(labels, rotation=25)
plt.show()

所以我想我的问题是,是不是可以进一步修改子图?或者我可以在pyqt画布中绘制图形,而不使用子图,这样我就可以从我的图中获得更多属性。

1 个答案:

答案 0 :(得分:17)

plt.subplot返回一个子对象,它是一种axis对象。它有两种添加轴标签的方法:set_xlabelset_ylabel

ax = plt.subplot('111')
ax.set_xlabel('X Axis')
ax.set_ylabel('Y Axis')

您也可以拨打plt.xlabelplt.ylabel(就像之前一样)并指定要应用标签的轴。

ax = plt.subplot('111')
plt.xlabel('X Axis', axes=ax)
plt.ylabel('Y Axis', axes=ax)

由于您只有一个轴,因此您也可以省略axes kwarg,因为如果没有指定,标签将自动应用于当前轴。

ax = plt.subplot('111')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')