Seaborn/Matplotlib: ¿Cómo puedo asignar nombres personalizados a las líneas que representan distribuciones en un diagrama KDE?

Estoy haciendo un diagrama de KDE de dos radios 1D de tamaño diferente con Seaborn.

import seaborn as sns
import numpy as np

# dummy data:
array1 = np.random.randint(10, size=10)
array2 = np.random.randint(10, size=15)

sns.displot([array1, array2], kind="kde")

¿Cómo puedo asignar nombres personalizados a las líneas que representan las distribuciones?

enter image description here

Pregunta hecha hace 3 años, 4 meses, 27 días - Por codexcrafter


4 Respuestas:

  • La otra respuesta es útil para mostrar cómo modificar el texto de la leyenda, pero en este caso creo que un mejor enfoque es dar al marino los nombres que desea utilizar:

    sns.displot({"zero": array1, "one": array2}, kind="kde")
    

    enter image description here

    De esta manera se requiere menos codificación, y (más importante) no corre el riesgo de tener las etiquetas que establece en la leyenda salir de sincronía con el orden de datos que pasa a displot.

    Respondida el Dec 18, 2020 a las 14:15 - por codecrafty

    Votos positivos: 0 | Votos negativos: 0

  • Si desea personalizar la leyenda en este caso, utilice fig.lengend[0] para obtener el texto de la leyenda, y actualizarlo.

    importa Seaborn as sns importación numpy como np

    # dummy data:
    array1 = np.random.randint(10, size=10)
    array2 = np.random.randint(10, size=15)
    
    grid = sns.displot([array1, array2], kind="kde")
    lg = grid.fig.legends[0] 
    lg.texts[0].set_text('ZERO')
    lg.texts[1].set_text('ONE')
    

    enter image description here

    Respondida el Dec 18, 2020 a las 14:25 - por debugdynamo

    Votos positivos: 0 | Votos negativos: 0

  • Para asignar nombres personalizados a las líneas que representan las distribuciones en un diagrama KDE con Seaborn, puedes utilizar la función legend de Matplotlib para añadir una leyenda a tu gráfico.

    Aquí te muestro cómo puedes modificar tu código para asignar nombres a las distribuciones:

    python
    import seaborn as sns
    import numpy as np
    import matplotlib.pyplot as plt
    
    

    dummy data:

    array1 = np.random.randint(10, size=10) array2 = np.random.randint(10, size=15)

    Crear el diagrama KDE con Seaborn

    plot = sns.displot([array1, array2], kind="kde")

    Añadir leyenda con nombres personalizados

    plot.set_axis_labels("Valor", "Densidad")

    Establecer etiquetas de los ejes

    plt.legend(["Distribución 1", "Distribución 2"])

    Añadir nombres a la leyenda

    plt.show()

    En este código, se ha añadido la función plt.legend después de crear el diagrama KDE con Seaborn. En esta función, debes proporcionar una lista con los nombres que deseas asignar a cada distribución. Luego, al mostrar el gráfico con plt.show(), la leyenda con los nombres personalizados se mostrará en el gráfico.

    Espero que esta solución te ayude a asignar nombres personalizados a las líneas en tu diagrama KDE.

    Respondida el Dec 19, 2020 a las 14:18 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Puedes asignar nombres personalizados a las líneas que representan las distribuciones en un diagrama KDE de Seaborn proporcionando una lista de etiquetas a la función hue_names. Aquí tienes un ejemplo de cómo hacerlo:

    python
    import seaborn as sns
    import numpy as np
    
    

    Datos ficticios

    array1 = np.random.randint(10, size=10) array2 = np.random.randint(10, size=15)

    Nombres personalizados para las líneas

    nombres_personalizados = ["Distribución 1", "Distribución 2"]

    Crea el diagrama KDE

    sns.displot([array1, array2], kind="kde", hue_names=nombres_personalizados)

    Esto producirá un diagrama KDE con las líneas de distribución etiquetadas con los nombres personalizados que hayas proporcionado.

    Nota: La función hue_names solo funciona cuando se utiliza el argumento hue para especificar diferentes distribuciones. En tu código original, no estás utilizando el argumento hue, por lo que no puedes utilizar hue_names para asignar nombres personalizados.

    Respondida el Dec 19, 2020 a las 14:21 - por Gemini

    Votos positivos: 0 | Votos negativos: 0