Estoy creando una figura en Matplotlib como esta:
from matplotlib import pyplot as plt fig = plt.figure() plt.plot(data) fig.suptitle('test title') plt.xlabel('xlabel') plt.ylabel('ylabel') fig.savefig('test.jpg') Quiero especificar tamaños de fuente para el título de la figura y las etiquetas de los ejes. Necesito que los tres tengan diferentes tamaños de fuente, por lo que establecer un tamaño de fuente global ( mpl.rcParams['font.size']=x ) no es lo que quiero. ¿Cómo configuro los tamaños de fuente para el título de la figura y las etiquetas de los ejes individualmente?
Si está más acostumbrado a usar objetos ax para hacer su trazado, puede encontrar ax.xaxis.label.set_size() más fácil de recordar, o al menos más fácil de encontrar usando la pestaña en una terminal ipython. Parece que necesita una operación de redibujado después para ver el efecto. Por ejemplo:
import matplotlib.pyplot as plt # set up a plot with dummy data fig, ax = plt.subplots() x = [0, 1, 2] y = [0, 3, 9] ax.plot(x,y) # title and labels, setting initial sizes fig.suptitle('test title', fontsize=12) ax.set_xlabel('xlabel', fontsize=10) ax.set_ylabel('ylabel', fontsize='medium') # relative to plt.rcParams['font.size'] # setting label sizes after creation ax.xaxis.label.set_size(20) plt.draw()No conozco una forma similar de establecer el tamaño de los subtítulos después de crearlos.
También puede hacer esto globalmente a través de un diccionario rcParams:
import matplotlib.pylab as pylab params = {'legend.fontsize': 'x-large', 'figure.figsize': (15, 5), 'axes.labelsize': 'x-large', 'axes.titlesize':'x-large', 'xtick.labelsize':'x-large', 'ytick.labelsize':'x-large'} pylab.rcParams.update(params)Las funciones que tratan con texto como label , title , etc. aceptan los mismos parámetros que matplotlib.text.Text . Para el tamaño de fuente, puede usar size/fontsize de fuente:
from matplotlib import pyplot as plt fig = plt.figure() plt.plot(data) fig.suptitle('test title', fontsize=20) plt.xlabel('xlabel', fontsize=18) plt.ylabel('ylabel', fontsize=16) fig.savefig('test.jpg') Para configurar globalmente los tamaños de title y label , mpl.rcParams contiene axes.titlesize y axes.labelsize . (De la página):
axes.titlesize : large # fontsize of the axes title axes.labelsize : medium # fontsize of the x any y labels (Hasta donde puedo ver, no hay forma de establecer los tamaños de etiqueta x e y por separado).
Y veo que axes.titlesize no afecta al suptitle . Supongo que debes configurarlo manualmente.
from numpy import* import matplotlib.pyplot as plt X = linspace(-pi, pi, 1000) class Crtaj: def nacrtaj(self,x,y): self.x=x self.y=y return plt.plot (x,y,"om") def oznaci(self): return plt.xlabel("x-os"), plt.ylabel("y-os"), plt.grid(b=True) from numpy import* M = array([[3,2,3],[1,2,6]]) class AriSred(object): def __init__(self,m): self.m=m def srednja(self): redovi = len(M) stupci = len (M[0]) lista=[] a=0 suma=0 while a<stupci: for i in range (0,redovi): suma=suma+ M[i,a] lista.append(suma) a=a+1 suma=0 b=array(lista) b=b/redovi return b OBJ = AriSred(M) sr = OBJ.srednja()Una solución alternativa para cambiar el tamaño de fuente es cambiar el relleno. Cuando Python guarda su PNG, puede cambiar el diseño usando el cuadro de diálogo que se abre. El espacio entre los ejes, el relleno si lo desea, puede modificarse en esta etapa.
Coloque right_ax antes set_ylabel()
ax.right_ax.set_ylabel('AB scale')
Para modificar solo la fuente del título (y no la fuente del eje) usé esto:
import matplotlib.pyplot as plt fig = plt.Figure() ax = fig.add_subplot(111) ax.set_title('My Title', fontdict={'fontsize': 8, 'fontweight': 'medium'})El fontdict acepta todos los kwargs de matplotlib.text.Text .
Otros han proporcionado respuestas sobre cómo cambiar el tamaño del título, pero en cuanto al tamaño de la etiqueta de los ejes, también puede usar el método set_tick_params .
Por ejemplo, para hacer que el tamaño de la etiqueta del tick del eje x sea pequeño:
ax.xaxis.set_tick_params(labelsize='small')o, para hacer que la etiqueta de marca del eje y sea grande:
ax.yaxis.set_tick_params(labelsize='large') También puede ingresar el tamaño de la labelsize como un flotante, o cualquiera de las siguientes opciones de cadena: 'xx-pequeño', 'x-pequeño', 'pequeño', 'mediano', 'grande', 'x-grande' o ' xx-grande'.
importar numpy como np
importar matplotlib.pyplot como plt
altura = [3, 12, 5, 18, 45]
barras = ('A', 'B', 'C', 'D', 'E')
x_pos = np.arange(len(barras))
plt.bar(x_pos, altura, color = (0.5,0.1,0.5,0.6))
plt.title('Mi título')
plt.xlabel('categorías')
plt.ylabel('valores')
plt.xticks(x_pos, barras)
plt.mostrar()
Si no está creando explícitamente objetos de figura y eje, puede establecer el tamaño de fuente del título cuando crea el título con el argumento fontdict .
Puede configurar los tamaños de fuente de las etiquetas x e y por separado cuando crea las etiquetas x e y con el argumento fontsize de fuente.
Por ejemplo:
plt.title('Car Prices are Increasing', fontdict={'fontsize':20}) plt.xlabel('Year', fontsize=18) plt.ylabel('Price', fontsize=16)¡También funciona con la trama de Seaborn y Pandas!