Colorear diagramas de dispersión por valores de columna
En Python, la biblioteca Matplotlib proporciona varios medios para personalizar la estética de los diagramas de dispersión. Una tarea común es asignar colores según los valores de una columna específica.
Integración de Seaborn
Una solución es aprovechar la biblioteca Seaborn, que se basa en Matplotlib. Seaborn ofrece funciones de alto nivel como sns.relplot y sns.FacetGrid que le permiten asignar fácilmente diagramas de dispersión a columnas específicas. Al especificar el parámetro de tono, puede colorear los puntos de acuerdo con una tercera columna que contiene etiquetas de categorías.
import seaborn as sns
sns.relplot(data=df, x='Weight (kg)', y='Height (cm)', hue='Gender')
Usando directamente Matplotlib
Como alternativa, puede utilizar directamente la función plt.scatter de Matplotlib para crear diagramas de dispersión y especificar colores manualmente. Esto requiere la creación de un diccionario de colores personalizado que asigne etiquetas de categorías a colores.
def dfScatter(df, xcol='Height', ycol='Weight', catcol='Gender'):
fig, ax = plt.subplots()
categories = np.unique(df[catcol])
colors = np.linspace(0, 1, len(categories))
colordict = dict(zip(categories, colors))
df['Color'] = df[catcol].apply(lambda x: colordict[x])
ax.scatter(df[xcol], df[ycol], c=df.Color)
return fig
Al llamar a esta función, puede generar un diagrama de dispersión coloreado por la columna de categoría especificada:
df = pd.DataFrame({'Height': np.random.normal(size=10),
'Weight': np.random.normal(size=10),
'Gender': ["Male", "Male", "Unknown", "Male", "Male",
"Female", "Did not respond", "Unknown", "Female", "Female"]})
fig = dfScatter(df)
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3