Adaug o figură matplotlib la un canvas pentru a o putea integra cu pyqt în aplicația mea. M-am uitat în jur și am folosit plt.add_subplot(111)
pare a fi calea de urmat(?) Dar nu pot adăuga proprietăți la subplot, așa cum aș putea face cu un grafic „obișnuit”
Configurarea figurii
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)
crearea unui subplot și adăugarea de date
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)
Aș dori să setez etichete x și y, dar dacă fac acest lucru ax.xlabel("Test")
AttributeError: 'AxesSubplot' object has no attribute 'ylabel'
ceea ce este posibil dacă am făcut-o fără să folosesc subplot
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()
Deci, cred că întrebarea mea este dacă nu este posibil să modific subploturile mai departe? Sau este posibil să trasez grafice într-un canvas pyqt, fără a utiliza subplot-uri, astfel încât să pot beneficia de mai multe proprietăți pentru graficele mele.
plt.subplot
returnează un obiect subplot care este un tip de obiect axă. Acesta are două metode pentru adăugarea de etichete de axe: set_xlabel
și set_ylabel
:
ax = plt.subplot('111')
ax.set_xlabel('X Axis')
ax.set_ylabel('Y Axis')
De asemenea, puteți apela plt.xlabel
și plt.ylabel
(așa cum ați făcut înainte) și să specificați axele pe care doriți să se aplice eticheta.
ax = plt.subplot('111')
plt.xlabel('X Axis', axes=ax)
plt.ylabel('Y Axis', axes=ax)
Deoarece aveți doar o singură axă, puteți omite, de asemenea, opțiunea axes
kwarg, deoarece eticheta va fi aplicată automat axelor curente dacă nu se specifică una.
ax = plt.subplot('111')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
rotation
kwarg:plt.xlabel('X Axis', rotation=30)
– > Por Suever.label = ax.set_xlabel('X Axis')
și apoilabel.set_rotation(30)
– > Por Suever.