Ich versuche, zwei getrennte Größen in derselben Grafik zu zeichnen, indem wir twiny wie folgt verwenden:
fig = figure()
ax = fig.add_subplot(111)
ax.plot(T, r, 'b-', T, R, 'r-', T, r_geo, 'g-')
ax.set_yscale('log')
ax.annotate('Approx. sea level', xy=(Planet.T_day*1.3,(Planet.R)/1000), xytext=(Planet.T_day*1.3, Planet.R/1000))
ax.annotate('Geostat. orbit', xy=(Planet.T_day*1.3, r_geo[0]), xytext=(Planet.T_day*1.3, r_geo[0]))
ax.set_xlabel('Rotational period (hrs)')
ax.set_ylabel('Orbital radius (km), logarithmic')
ax.set_title('Orbital charts for ' + Planet.N, horizontalalignment='center', verticalalignment='top')
ax2 = ax.twiny()
ax2.plot(v,r,'k-')
ax2.set_xlabel('Linear speed (ms-1)')
show()
und die Daten werden gut dargestellt, aber ich habe das Problem, dass sich der Titel der Abbildung mit den Achsenbeschriftungen auf der sekundären X-Achse überschneidet, so dass es kaum lesbar ist (ich wollte hier ein Bildbeispiel posten, aber ich habe keine hoch genug rep noch).
Ich würde gerne wissen, ob es eine unkomplizierte Möglichkeit gibt, den Titel direkt um einige Dutzend Pixel nach oben zu verschieben, sodass das Diagramm schöner aussieht.
Ich bin nicht sicher, ob es eine neue Funktion in späteren Versionen von matplotlib ist, aber zumindest für 1.3.1 lautet das einfach:
plt.title(figure_title, y=1.08)
Dies funktioniert auch für plt.suptitle()
, aber (noch) nicht für plt.xlabel()
usw.
Vergessen Sie die Verwendung von plt.title
und platzieren Sie den Text direkt mit plt.text
. Ein übertriebenes Beispiel ist unten angegeben:
import pylab as plt
fig = plt.figure(figsize=(5,10))
figure_title = "Normal title"
ax1 = plt.subplot(1,2,1)
plt.title(figure_title, fontsize = 20)
plt.plot([1,2,3],[1,4,9])
figure_title = "Raised title"
ax2 = plt.subplot(1,2,2)
plt.text(0.5, 1.08, figure_title,
horizontalalignment='center',
fontsize=20,
transform = ax2.transAxes)
plt.plot([1,2,3],[1,4,9])
plt.show()
ax.set_title('My Title\n', fontsize="15", color="red")
plt.imshow(myfile, Origin="upper")
Wenn Sie '\n'
direkt nach Ihrer Titelzeichenfolge einfügen, wird die Zeichnung direkt unter dem Titel gezeichnet. Das könnte auch eine schnelle Lösung sein.
Ich hatte ein Problem mit dem X-Label, das einen Untertitel-Titel überschneidet. das hat für mich funktioniert:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(2, 1)
ax[0].scatter(...)
ax[1].scatter(...)
plt.tight_layout()
.
.
.
plt.show()
referenz:
Verwenden Sie einfach plt.tight_layout()
vor plt.show()
. Es läuft gut.