Cambiar el tamaño de fuente en Matplotlib

     

    Introducción

    Matplotlib es una de las bibliotecas de visualización de datos más utilizadas en Python. Gran parte de la popularidad de Matplotlib proviene de sus opciones de personalización: puede modificar casi cualquier elemento de su jerarquía de objetos.

    En este tutorial, veremos cómo cambiar el tamaño de fuente en Matplotlib.

    Cambiar el tamaño de fuente en Matplotlib

    Hay algunas formas en que puede cambiar el tamaño de las fuentes en Matplotlib. Puede configurar el fontsize argumento, cambiar la forma en que Matplotlib trata las fuentes en general, o incluso cambiar el tamaño de la figura.

    Primero creemos un diagrama simple en el que queremos cambiar el tamaño de las fuentes:

    import matplotlib.pyplot as plt
    import numpy as np
    
    fig, ax = plt.subplots(figsize=(12, 6))
    
    x = np.arange(0, 10, 0.1)
    y = np.sin(x)
    z = np.cos(x)
    
    ax.plot(y, color="blue", label="Sine wave")
    ax.plot(z, color="black", label="Cosine wave")
    fig.suptitle('Sine and cosine waves')
    plt.xlabel('Time')
    plt.ylabel('Intensity')
    leg = ax.legend()
    
    plt.show()
    

    Cambiar tamaño de fuente usando tamaño de fuente

    Probemos la opción más sencilla. Cada función que se ocupa de texto, como suptitle(), xlabel() y todas las demás funciones textuales aceptan un argumento – fontsize.

    Revisemos el código de antes y especifiquemos un fontsize para estos elementos:

    import matplotlib.pyplot as plt
    import numpy as np
    
    fig, ax = plt.subplots(figsize=(12, 6))
    
    x = np.arange(0, 10, 0.1)
    y = np.sin(x)
    z = np.cos(x)
    
    ax.plot(y, color="blue", label="Sine wave")
    ax.plot(z, color="black", label="Cosine wave")
    fig.suptitle('Sine and cosine waves', fontsize=20)
    plt.xlabel('Time', fontsize=16)
    plt.ylabel('Intensity', fontsize=16)
    leg = ax.legend()
    
    plt.show()
    

    Aquí, hemos configurado el fontsize Para el suptitle así como las etiquetas de tiempo e intensidad. Ejecutar este código produce:

    También podemos cambiar el tamaño de la fuente en la leyenda agregando el prop argumento y estableciendo el tamaño de fuente allí:

    leg = ax.legend(prop={"size":16})
    

    Esto cambiará el tamaño de fuente, que en este caso también mueve la leyenda hacia la parte inferior izquierda para que no se superponga con los elementos de la parte superior derecha:

    Sin embargo, aunque podemos establecer cada tamaño de fuente de esta manera, si tenemos muchos elementos textuales y solo queremos un tamaño general uniforme, este enfoque es repetitivo.

    En tales casos, podemos pasar a configurar el tamaño de fuente de forma global.

    Cambiar el tamaño de fuente globalmente

    Hay dos formas de establecer el tamaño de fuente de forma global. Queremos configurar el font_size parámetro a un nuevo tamaño. Podemos llegar a este parámetro a través de rcParams['font.size'].

    Una forma es modificarlos directamente:

    import matplotlib.pyplot as plt
    import numpy as np
    
    fig, ax = plt.subplots(figsize=(12, 6))
    
    x = np.arange(0, 10, 0.1)
    y = np.sin(x)
    z = np.cos(x)
    
    plt.rcParams['font.size'] = '16'
    
    ax.plot(y, color="blue", label="Sine wave")
    ax.plot(z, color="black", label="Cosine wave")
    plt.xlabel('Time')
    plt.ylabel('Intensity')
    fig.suptitle('Sine and cosine waves')
    leg = ax.legend()
    
    plt.show()
    

    Tienes que configurarlos antes del plot() llamada a la función ya que si intenta aplicarlos posteriormente, no se realizarán cambios. Este enfoque cambiará todo lo especificado como fuente por el font objeto kwargs.

    Sin embargo, cuando ejecutamos este código, es obvio que las marcas xey, ni las etiquetas xey no cambiaron de tamaño:

    Dependiendo de la versión de Matplotlib que esté ejecutando, no podrá cambiarlos con los parámetros rc. Usarías axes.labelsize y xtick.labelsize/ytick.labelsize para ellos respectivamente.

    Si configurar estos no cambia el tamaño de las etiquetas, puede utilizar el set() función pasando en un fontsize o usa el set_fontsize() función:

    import matplotlib.pyplot as plt
    import numpy as np
    
    fig, ax = plt.subplots(figsize=(12, 6))
    
    x = np.arange(0, 10, 0.1)
    y = np.sin(x)
    z = np.cos(x)
    
    # Set general font size
    plt.rcParams['font.size'] = '16'
    
    # Set tick font size
    for label in (ax.get_xticklabels() + ax.get_yticklabels()):
    	label.set_fontsize(16)
    	
    ax.plot(y, color="blue", label="Sine wave")
    ax.plot(z, color="black", label="Cosine wave")
    plt.xlabel('Time', fontsize=16)
    plt.ylabel('Intensity', fontsize=16)
    
    fig.suptitle('Sine and cosine waves')
    leg = ax.legend()
    
    plt.show()
    

    Esto resulta en:

    Conclusión

    En este tutorial, hemos repasado varias formas de cambiar el tamaño de las fuentes en Matplotlib.

    Si está interesado en la visualización de datos y no sabe por dónde empezar, asegúrese de consultar nuestro libro sobre Visualización de datos en Python.

    Data Visualization in Python, un libro para desarrolladores de Python principiantes e intermedios, lo guiará a través de la manipulación simple de datos con Pandas, cubrirá bibliotecas de trazado centrales como Matplotlib y Seaborn, y le mostrará cómo aprovechar las bibliotecas declarativas y experimentales como Altair.

     

    Visualización de datos en Python

    ¡Comprenda mejor sus datos con visualizaciones! Con 340 páginas, aprenderá los entresijos de la visualización de datos en Python con bibliotecas populares como Matplotlib, Seaborn, Bokeh y más.

    Etiquetas:

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *