2017-07-12 4 views
4

Ich möchte in Matplotlib mehrere xlabels gleichzeitig zuweisen. Jetzt weise ich mehrere xlabels wie folgt zu.Gibt es eine Möglichkeit, mehrere xlabels gleichzeitig in Matplotlib zuzuweisen?

import matplotlib.pyplot as plt 

fig1 = plt.figure() 
ax1 = fig1.add_subplot(211) 
ax1.set_xlabel("x label") 
ax2 = fig1.add_subplot(212) 
ax2.set_xlabel("x label") 

Ich fühle diesen Weg ist überflüssig. Gibt es eine Möglichkeit, mehrere xlabels auf einmal wie folgt zuzuweisen?

(ax1,ax2).set_xlabel("x label") 

Antwort

3

Sie können ein Listenverständnis verwenden.

[ax.set_xlabel("x label") for ax in [ax1,ax2]] 

Sie auch festlegen können bereits die Etiketten auf subplot Schöpfung, die von der Frage nach einer einzigen Zeile den vollständigen Code vereinfacht: Sie können speichern Sie Ihre ax Objekte in einer Liste

fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, subplot_kw=dict(xlabel="xlabel")) 
+0

Vielen Dank! – user6695701

3

. Durch die Verwendung der subplots Funktion wird diese Liste für Sie erstellt:

import matplotlib.pyplot as plt 

fig, axes = plt.subplots(nrows=1, ncols=2) 

[ax.set_xlabel("x label") for ax in axes] 

axes[0,0].plot(data)  # whatever you want to plot 
0

würde ich ein normales for -loop bevorzugen, wie es Ihre Absicht klar macht:

for ax in [ax1, ax2]: 
    ax.set_xlabel("x label") 

Wenn Sie lieber einen Einzeiler , erinnere mich an die map Funktion:

map(lambda ax : ax.set_xlabel("x label"), [ax1, ax2]) 
Verwandte Themen