Estoy tratando de trazar dos cantidades separadas en el mismo gráfico usando twiny de la siguiente manera:
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()
y los datos se presentan bien, pero tengo el problema de que el título de la figura se superpone con las etiquetas de los ejes en el eje x secundario para que sea apenas legible (quería publicar un ejemplo de imagen aquí, pero no tengo un rep suficientemente alto todavía).
Me gustaría saber si hay una forma sencilla de cambiar el título directamente hacia arriba unas pocas decenas de píxeles, para que el gráfico se vea más bonito.
python
matplotlib
title
figure
Magic_Matt_Man
fuente
fuente
Respuestas:
No estoy seguro de si es una nueva característica en versiones posteriores de matplotlib, pero al menos para 1.3.1, esto es simplemente:
Esto también funciona para
plt.suptitle()
, pero no (todavía) paraplt.xlabel()
, etc.fuente
labelpad
, consulte aquí .title
ha tomadox
yy
argumentos durante mucho tiempo (hasta donde puedo recordar, en cualquier caso).Olvídate de usar
plt.title
y coloca el texto directamente conplt.text
. A continuación se da un ejemplo exagerado:fuente
tight_layout
todavía no parece funcionar bien con ubicaciones no estándar. ¿Quizás podrías hacer un informe de error?title = plt.title(...)
luego puede especificar enmarcar la trama estrechamente alrededor del título usando la opciónbbox_extra_artists
:figure.savefig(filename, bbox_extra_artists=(title), bbox_inches='tight')
Si coloca
'\n'
justo después de su cadena de título, la trama se dibuja justo debajo del título. Esa podría ser una solución rápida también.fuente
Estaba teniendo un problema con la etiqueta x superpuesta a un título de subtrama; esto funcionó para mí:
antes de
después
referencia:
fuente
Solo usa
plt.tight_layout()
antesplt.show()
. Funciona bien.fuente
Puede usar el pad para este caso:
fuente