python matplotlib title figure

El título de la figura de Python Matplotlib se superpone a la etiqueta de los ejes cuando se usa twiny



matplotlib title position (3)

Intento 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 una lo suficientemente alto rep todavía).

Me gustaría saber si hay una forma directa de cambiar el título directamente unas pocas decenas de píxeles, de modo que el gráfico se vea más bonito.


No estoy seguro de si es una característica nueva en las versiones posteriores de matplotlib, pero al menos para 1.3.1, esto es simplemente:

plt.title(figure_title, y=1.08)

Esto también funciona para plt.suptitle() , pero no (todavía) para plt.xlabel() , etc.


Olvídese de usar plt.title y coloque el texto directamente con plt.text . Un ejemplo exagerado se da a continuación:

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")

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.