J'essaie de tracer deux quantités distinctes sur le même graphique en utilisant twiny comme suit:
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()
et les données sont bien présentées, mais j'ai le problème que le titre de la figure chevauche les étiquettes des axes sur l'axe des x secondaire de sorte qu'il est à peine lisible (je voulais publier un exemple d'image ici, mais je n'ai pas de assez élevé encore).
J'aimerais savoir s'il existe un moyen simple de simplement décaler le titre directement de quelques dizaines de pixels, pour que le graphique soit plus joli.
python
matplotlib
title
figure
Magic_Matt_Man
la source
la source
Réponses:
Je ne sais pas s'il s'agit d'une nouvelle fonctionnalité dans les versions ultérieures de matplotlib, mais au moins pour la version 1.3.1, c'est simplement:
Cela fonctionne également pour
plt.suptitle()
, mais pas (encore) pourplt.xlabel()
, etc.la source
labelpad
, voir ici .title
a prisx
et desy
arguments depuis très longtemps (aussi longtemps que je me souvienne, en tout cas).Oubliez l'utilisation
plt.title
et placez le texte directement avecplt.text
. Un exemple exagéré est donné ci-dessous:la source
tight_layout
ne semble toujours pas bien jouer avec des emplacements non standard. Peut-être pourriez-vous faire un rapport de bogue?title = plt.title(...)
alors vous pouvez spécifier d'encadrer l'intrigue étroitement autour du titre en utilisant l'optionbbox_extra_artists
:figure.savefig(filename, bbox_extra_artists=(title), bbox_inches='tight')
Si vous mettez
'\n'
juste après votre chaîne de titre, le tracé est dessiné juste en dessous du titre. Cela pourrait aussi être une solution rapide.la source
J'avais un problème avec le x-label chevauchant un titre de sous-intrigue; cela a fonctionné pour moi:
avant
après
référence:
la source
Utilisez juste
plt.tight_layout()
avantplt.show()
. Ça marche bien.la source
Vous pouvez utiliser pad pour ce cas:
la source