Próbuję wykreślić dwie oddzielne wielkości na tym samym wykresie za pomocą twiny w następujący sposób:
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()
a dane są prezentowane dobrze, ale mam problem, że tytuł figury nakłada się na etykiety osi na pomocniczej osi x tak, że jest ledwo czytelny (chciałem zamieścić tutaj przykładowe zdjęcie, ale nie mam wystarczająco wysoka liczba powtórzeń).
Chciałbym wiedzieć, czy istnieje prosty sposób, aby po prostu przesunąć tytuł bezpośrednio w górę o kilka dziesiątek pikseli, aby wykres wyglądał ładniej.
python
matplotlib
title
figure
Magic_Matt_Man
źródło
źródło
Odpowiedzi:
Nie jestem pewien, czy jest to nowa funkcja w późniejszych wersjach matplotlib, ale przynajmniej dla 1.3.1 jest to po prostu:
Działa to również dla
plt.suptitle()
, ale (jeszcze) dlaplt.xlabel()
itp.źródło
labelpad
, patrz tutaj .title
brałx
iy
argumentował przez bardzo długi czas (przynajmniej o ile pamiętam).Zapomnij o używaniu
plt.title
i umieść tekst bezpośrednio za pomocąplt.text
. Poniżej podano przesadzony przykład:źródło
tight_layout
nadal nie wygląda dobrze na niestandardowe miejsca docelowe. Może mógłbyś zgłosić błąd?title = plt.title(...)
więc możesz określić ścisłe obramowanie wykresu wokół tytułu, używając opcjibbox_extra_artists
:figure.savefig(filename, bbox_extra_artists=(title), bbox_inches='tight')
Jeśli umieścisz
'\n'
bezpośrednio po tytule, wykres jest rysowany tuż pod tytułem. To też może być szybkie rozwiązanie.źródło
Miałem problem z etykietą x nakładającą się na tytuł wątku pomocniczego; to zadziałało dla mnie:
przed
po
odniesienie:
źródło
Po prostu użyj
plt.tight_layout()
wcześniejplt.show()
. To dobrze działa.źródło
Możesz użyć podkładki w tym przypadku:
źródło