Matplotlib und Subplotabstand - vertikal
Verfasst: Sonntag 6. März 2011, 12:40
Mahlzeit
ich stehe vor dem Problem,
dass ich 3 Subplots untereinander plotten möchte und
jedem Subplot einen Titel verpassen will.
Leider sind die Abstände so gering, dass der Titel vorn
der Achsenbeschriftung überdeckt wird.
Wie bekomme ich die weiter auseinander, so das man
den Titel lesen kann? Die Beispiele auf der Homepage
von Matplotlib konnten zur Lösung leider nicht beitragen :K

Gruß

ich stehe vor dem Problem,
dass ich 3 Subplots untereinander plotten möchte und
jedem Subplot einen Titel verpassen will.
Leider sind die Abstände so gering, dass der Titel vorn
der Achsenbeschriftung überdeckt wird.
Wie bekomme ich die weiter auseinander, so das man
den Titel lesen kann? Die Beispiele auf der Homepage
von Matplotlib konnten zur Lösung leider nicht beitragen :K

Code: Alles auswählen
def plot_schnittkraefte_vorspannung(string):
# Plottet die Querkraft
# String auspacken
json = unpack(string)
pv = numpy.array(json["pv"])
ph = numpy.array(json["ph"])
mcp = numpy.array(json["mcp"])
x = numpy.array(json["x_plot_schnitt"])
l1 = json["l1"]
#Ausgabe als Plot
#Plot x,y
s = StringIO()
fig = Figure(figsize=(7,6))
canvas = FigureCanvas(fig)
ax1 = fig.add_subplot(311)
ax1.plot(x, ph, label= "N", color = 'k')
ax1.set_ylabel('Normalkraft [kN]', size='x-small')
ax1.set_title('Normalkraft infolge Vorspannung', size='x-small')
ax1.axhline(linewidth=1, color='k', linestyle='-')
ax1.fill_between(x , 0, ph, where=ph<0, color = 'b', alpha=0.5)
ax1.set_ylim(0,(numpy.amin(ph))*1.1) # Plot auf Traegerhoehe begrenzen
ax1.grid()
ax1.set_xlim(0,numpy.amax(x)) # Plot auf Traegerlenge begrenzen
ax2 = fig.add_subplot(312)
ax2.set_title('Querkraft infolge Vorspannung', size='x-small')
ax2.set_ylabel('Querkraft [kN]', size='x-small')
ax2.plot(x, pv, label= "V", color = 'k')
ax2.axhline(linewidth=1, color='k', linestyle='-')
ax2.axvline(x = l1, linewidth=2, color='k') # Lager
ax2.fill_between(x, 0, pv, where=pv<=0, color = 'r', alpha=0.5)
ax2.fill_between(x , 0, pv, where=pv>0, color = 'b', alpha=0.5)
ax2.grid() # Gitternetz zeichnen
ax2.set_xlim(0,numpy.amax(x)) # Plot auf Traegerlenge begrenzen
ax3 = fig.add_subplot(313)
ax3.set_ylabel('Momentenverlauf [kN]', size='x-small')
ax3.set_xlabel('Laenge [m]', size='x-small')
ax3.set_title('Momentenverlauf infolge Vorspannung', size='x-small')
ax3.plot(x, mcp, label= "M", color = 'k')
ax3.axhline(linewidth=1, color='k', linestyle='-')
ax3.axvline(x = l1, linewidth=2, color='k') # Lager
ax3.fill_between(x, 0, mcp, where=mcp>=0, color = 'r', alpha=0.5)
ax3.fill_between(x , 0, mcp, where=mcp<0, color = 'b', alpha=0.5)
ax3.grid() # Gitternetz zeichnen
ax3.set_xlim(0,numpy.amax(x)) # Plot auf Traegerlenge begrenzen
ax3.set_ylim(numpy.amax(mcp),numpy.amin(mcp)) # Plot auf Traegerhoehe begrenzen
ax3.set_xlabel('Laenge [m]', size='x-small')
canvas.print_figure(s, format='png')
return s.getvalue()