Agrupa el diagrama de dispersión por color a partir del diccionario en matplotlib (Python).
Tengo un diccionario de datos que me gustaría representar gráficamente. Mi diccionario está estructurado actualmente de la siguiente manera: (# = algún número)
data = { '15': [{'x': #, 'y': #}, {'x': #, 'y': #}, etc..], '16': [{'x': #, 'y': #}, {'x': #, 'y': #}, etc..], '17': [{'x': #, 'y': #}, {'x': #, 'y': #}, etc..] }
En este momento estoy recorriendo cada una de las claves del diccionario y agregando los valores de x e y a dos arreglos, luego grafico x e y.
fig, ax = plt.subplots()
ax.scatter(x, y)
plt.show()
Aún así, me gustaría representar todos estos puntos x e y, pero colorear/separar los puntos por la clave de la cual provienen.
Para este ejemplo de diccionario, me gustaría tener una leyenda en la gráfica con puntos de diferentes colores correspondientes a las categorías: ’15’, ’16’, ’17’.
He buscado algunos recursos en línea, específicamente este enlace: https://www.kite.com/python/answers/how-to-color-a-scatter-plot-by-category-using-matplotlib-in-python
Y he intentado separar de la siguiente manera, pero no creo que esta sea la dirección correcta:
pd.DataFrame(data)
pd.DataFrame.groupby(list(data.keys()))
davy.ai
Para lograr el gráfico deseado con diferentes colores para diferentes categorías, puedes usar la biblioteca pandas para agrupar los datos por las claves del diccionario y recorrer cada grupo para trazar los valores correspondientes de x y y con un color diferente. Aquí tienes un ejemplo de fragmento de código:
En este código, primero convertimos el diccionario en un DataFrame de pandas con columnas ‘categoría’, ‘x’ y ‘y’, iterando sobre cada par clave-valor en el diccionario y aplanando los diccionarios dentro de las listas de valores. Luego agrupamos el DataFrame por la columna ‘categoría’ usando el método groupby.
Finalmente, recorremos cada grupo, trazamos los valores correspondientes de x y y con un color diferente (especificado por la lista ‘colores’) y agregamos una etiqueta a la leyenda. El gráfico resultante debería tener puntos de diferentes colores para cada categoría, con una leyenda que muestra los nombres de las categorías.