how font change python matplotlib

python - font - ¿Cómo establecer un único título principal sobre todas las subtramas con Pyplot?



subplot title python (3)

Algunos puntos que encuentro útiles al aplicar esto a mis propios argumentos:

  • Prefiero la consistencia de usar fig.suptitle(title) lugar de plt.suptitle(title)
  • Al usar fig.tight_layout() el título debe fig.subplots_adjust(top=0.88) con fig.subplots_adjust(top=0.88)
  • Vea la respuesta a below sobre fontsizes

Código de ejemplo tomado de la demo de subplots en matplotlib docs y ajustado con un título maestro.

import matplotlib.pyplot as plt import numpy as np # Simple data to display in various forms x = np.linspace(0, 2 * np.pi, 400) y = np.sin(x ** 2) fig, axarr = plt.subplots(2, 2) fig.suptitle("This Main Title is Nicely Formatted", fontsize=16) axarr[0, 0].plot(x, y) axarr[0, 0].set_title(''Axis [0,0] Subtitle'') axarr[0, 1].scatter(x, y) axarr[0, 1].set_title(''Axis [0,1] Subtitle'') axarr[1, 0].plot(x, y ** 2) axarr[1, 0].set_title(''Axis [1,0] Subtitle'') axarr[1, 1].scatter(x, y ** 2) axarr[1, 1].set_title(''Axis [1,1] Subtitle'') # # Fine-tune figure; hide x ticks for top plots and y ticks for right plots plt.setp([a.get_xticklabels() for a in axarr[0, :]], visible=False) plt.setp([a.get_yticklabels() for a in axarr[:, 1]], visible=False) # Tight layout often produces nice results # but requires the title to be spaced accordingly fig.tight_layout() fig.subplots_adjust(top=0.88) plt.show()

Estoy usando pyplot . Tengo 4 subtramas. ¿Cómo establecer un único título principal sobre todas las subtramas? title() establece sobre la última subparcela.


Si tus subtramas también tienen títulos, es posible que debas ajustar el tamaño del título principal:

plt.suptitle("Main Title", size=16)


Utilice pyplot.suptitle o Figure.suptitle :

import matplotlib.pyplot as plt import numpy as np fig=plt.figure() data=np.arange(900).reshape((30,30)) for i in range(1,5): ax=fig.add_subplot(2,2,i) ax.imshow(data) fig.suptitle(''Main title'') # or plt.suptitle(''Main title'') plt.show()