Este artículo aborda cómo crear un diagrama de dispersión en Python usando matplotlib, donde cada color representa un nivel categórico diferente. Este enfoque evita el uso de paquetes de trazado auxiliares como seaborn y ggplot para Python.
Matplotlib proporciona el argumento c en plt.scatter, que permite la personalización del color. Aquí hay un ejemplo:
import matplotlib.pyplot as plt
import pandas as pd
# Sample DataFrame
df = pd.DataFrame({'carat': [0.23, 0.21, 0.23],
'price': [326, 326, 327],
'color': ['E', 'E', 'E']})
# Color mapping
colors = {'D': 'tab:blue', 'E': 'tab:orange', 'F': 'tab:green', 'G': 'tab:red', 'H': 'tab:purple', 'I': 'tab:brown', 'J': 'tab:pink'}
# Scatter plot with colors
plt.scatter(df['carat'], df['price'], c=df['color'].map(colors))
plt.show()
La función map(colors) asigna los colores de "diamante" a los colores de "trazado".
Aunque este artículo se centra en matplotlib Vale la pena mencionar que seaborn también ofrece una solución conveniente:
import seaborn as sns
# Scatter plot with colors
sns.lmplot(x='carat', y='price', data=df, hue='color', fit_reg=False)
Para un enfoque manual, puedes usar pandas para agrupar por color y trazar cada grupo por separado:
import matplotlib.pyplot as plt
import pandas as pd
# Sample DataFrame
df = pd.DataFrame({'carat': [0.23, 0.21, 0.23],
'price': [326, 326, 327],
'color': ['E', 'E', 'E']})
# Color mapping
colors = {'D': 'tab:blue', 'E': 'tab:orange', 'F': 'tab:green', 'G': 'tab:red', 'H': 'tab:purple', 'I': 'tab:brown', 'J': 'tab:pink'}
# Group by color and plot
grouped = df.groupby('color')
for key, group in grouped:
group.plot(ax=plt.gca(), kind='scatter', x='carat', y='price', label=key, color=colors[key])
plt.show()
Esto supone el mismo DataFrame que antes y asigna colores manualmente durante el proceso de trazado.
Este artículo ha demostrado cómo trazar diferentes colores para diferentes niveles categóricos en Python usando matplotlib, junto con opciones adicionales usando seaborn y un enfoque manual con pandas.
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