2016-07-29 13 views
2

Ich füge eine Matplotlib-Figur zu einer Arbeitsfläche hinzu, damit ich sie in meine Anwendung mit pyqt integrieren kann. Ich wurden umsah und mit plt.add_subplot(111) scheinen den Weg zu gehen (?) Aber ich kann alle Eigenschaften nicht fügen dem subplot wie ich mit einem „gewöhnlichen“ plot kannEigenschaften von matplotlib und subplots

Figur Setup

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) 

Schaffung subplot und das Hinzufügen von Daten

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) 

ich mag würde x und y-Etiketten setzen, aber wenn ich ax.xlabel("Test")

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

was möglich ist, wenn ich es tat, indem sie nicht subplot mit

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() 

Also ich denke, meine Frage ist, ist es nicht möglich Nebenhandlungen weiter zu ändern? Oder ist es mir möglich, Grafiken in einem Pygat-Canvas zu plotten, ohne Subplots zu verwenden, damit ich mehr Eigenschaften für meine Plots bekommen kann?

Antwort

4

plt.subplot gibt ein Subplot-Objekt zurück, das eine Art von Achsenobjekt ist. Es verfügt über zwei Methoden für das Hinzufügen von Achsenbeschriftungen: set_xlabel und set_ylabel:

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

Sie auch plt.xlabel nennen könnten und plt.ylabel (wie Sie vorher) und geben Sie die Achsen, auf denen Sie das Etikett wollen angewandt.

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

Da Sie nur eine Achse haben, könnten Sie auch die axes kwarg weglassen, da das Etikett, wenn automatisch auf die aktuellen Achsen angewendet werden, um einen nicht angegeben ist.

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

Das hat den Trick, danke! Ist es möglich, die x-Etiketten zu drehen? – vandelay

+1

@vandelay Sicher. Sie können die 'rotation' verwenden kwarg:' plt.xlabel ('X-Achse', Rotation = 30) ' – Suever

+0

Ich dachte mehr mit Nebenstellen :), wie mit Axt. Danke für die Antwort. – vandelay