2017-05-25 3 views
0

Warum funktioniert Matplotlib so, wie es funktioniert? Zum Beispiel, warum Sie dies tun:Warum arbeitet Matplotlib nicht direkt auf Objekten?

x = plt.bar([1,2,3,4],[1,2,2,1]) 
plt.title('Title') 

Statt:

x = plt.bar([1,2,3,4],[1,2,2,1]) 
x.title('Title') 

Es scheint, wie Plots sollten Objekte sein, die Methoden wie "Titel" haben "xlabel" usw.

Es fühlt sich für mich unpythonisch an, Funktionen zu haben, die das Objekt, auf dem sie arbeiten, nicht als Parameter verwenden, aber ich nehme an, dass es einen guten Grund gibt, dass es so funktioniert?

Antwort

1

Matplotlib hat tatsächlich eine objektorientierte API. So würde das Beispiel seine

fig, ax = plt.subplots() 
ax.bar([1,2,3,4],[1,2,2,1]) 
ax.set_title('Title') 
ax.set_xlabel("X-label") 
fig.set_facecolor("pink") 

die Aufgabe zu arbeiten, ist meist die matplotlib.Axes.axes, genannt ax hier. Es hat die Plot-Methoden, sowie alle Arten von anderen Methoden, um den Graphen zu optimieren.

Die Matplotlib API ist sehr gut dokumentiert. Die entsprechenden Methoden und Rückgabetypen, die Sie für die OO-Programmierung benötigen, finden Sie in der Dokumentation.

Sie können dann z.B. Blick auf dem Rückgabetyp ax.bar, die ein matplotlib.container.BarContainer und kolorieren die zweite Bar wie

bars = ax.bar([1,2,3,4],[1,2,2,1]) 
bars[1].set_color("crimson") 

Pyplot selbst nicht sehr pythonic ist, weil es die MATLAB-Sprache ähnelt entwickelt wurde. Unter der Haube ruft es normalerweise nur die entsprechenden Klassenmethoden aus der API auf.

Verwandte Themen