Cómo agregar leyenda con etiquetas de identificación a mi código
Tengo el consumo de electricidad de 25 casas, y yom doing K-Means clustering on the dataset that holds those houses. After importing the dataset, pre-processing it, and applying K-Means with K=2, I plotted the data but when I
Estoy agregando la leyenda que estoy recibiendo esto:
No hay mangos con etiquetas encontradas para poner en leyenda.
No hay error en el código y está funcionando pero quiero que mi código genere leyendas automáticas que mantengan el ID de cada casa desde 0 a 24.
Aquí está mi código donde estoy trazando los datos:
plt.figure(figsize=(13,13))
import itertools
marker = itertools.cycle(('+', 'o', '*' , 'X', 's','8','>','1','<'))
for cluster_index in [0,1]:
plt.subplot(2,1,cluster_index + 1)
for index, row in data1.iterrows():
if row.iloc[-1] == cluster_index:
plt.plot(row.iloc[1:-1] ,marker = next(marker) , alpha=1)
plt.legend(loc="right")
plt.plot(kmeans.cluster_centers_[cluster_index], color='k' ,marker='o', alpha=1)
ax = plt.gca()
ax.tick_params(axis = 'x', which = 'major', labelsize = 10)
plt.xticks(rotation="vertical")
plt.ylabel('Monthly Mean Consumption 2018-2019', fontsize=10)
plt.title(f'Cluster {cluster_index}', fontsize=15)
plt.tight_layout()
plt.show()
plt.close()
Sólo quiero tener la leyenda en la figura de salida con el id de cada casa, por favor cualquier ayuda
Pregunta hecha hace 3 años, 4 meses, 29 días - Por rubyrogue
3 Respuestas:
-
Como no tengo tus datos, no puedo probarlo en un complot ahora mismo, pero supongo que el problema viene de no pasar un
label
argumentaciónplt.plot
Es decir:for index, row in data1.iterrows(): if row.iloc[-1] == cluster_index: plt.plot(row.iloc[1:-1] ,marker = next(marker), alpha=1, label=index) plt.legend(loc="right")
Respondida el Dec 17, 2020 a las 13:39 - por techtrailblazer
Votos positivos: 0 | Votos negativos: 0 -
El problema que estás experimentando con la leyenda en tu gráfico es debido a que no estás añadiendo etiquetas específicas para cada casa en el bucle donde se genera la gráfica.
Para solucionar esto, una posible solución es agregar
plt.legend()
fuera del buclefor
que recorre los datos y utilizar la funciónlabel
en el métodoplt.plot()
para asignar etiquetas específicas a cada trama. Aquí te muestro un ejemplo de cómo podrías modificar tu código:python plt.figure(figsize=(13,13)) import itertools marker = itertools.cycle(('+', 'o', '*' , 'X', 's','8','>','1','<')) for cluster_index in [0,1]: plt.subplot(2,1,cluster_index + 1) for index, row in data1.iterrows(): if row.iloc[-1] == cluster_index: plt.plot(row.iloc[1:-1] ,marker = next(marker) , alpha=1, label=f'House {index}')
Añadir etiquetas a cada trama
plt.plot(kmeans.cluster_centers_[cluster_index], color='k' ,marker='o', alpha=1) ax = plt.gca() ax.tick_params(axis = 'x', which = 'major', labelsize = 10) plt.xticks(rotation="vertical") plt.ylabel('Monthly Mean Consumption 2018-2019', fontsize=10) plt.title(f'Cluster {cluster_index}', fontsize=15) plt.legend(loc='upper right')Añadir leyenda fuera del bucle
plt.tight_layout() plt.show() plt.close()En este código, he agregado la etiqueta
label=f'House {index}'
en la funciónplt.plot()
que genera las trazas para que cada trama tenga su identificación de casa correspondiente. Luego, he movidoplt.legend(loc='upper right')
fuera del bucle para que se pueda generar correctamente la leyenda con las etiquetas de identificación de las casas.Espero que este ajuste te ayude a resolver tu problema con la leyenda en tu gráfico. ¡Déjame saber si tienes alguna otra pregunta!
Respondida el Dec 18, 2020 a las 13:36 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Para agregar una leyenda con etiquetas de identificación a tu código, puedes utilizar la función
label
al trazar cada punto de datos. Aquí tienes el código modificado:python for cluster_index in [0,1]: plt.subplot(2,1,cluster_index + 1) for index, row in data1.iterrows(): if row.iloc[-1] == cluster_index: plt.plot(row.iloc[1:-1] ,marker = next(marker) , alpha=1, label=f'Casa {index}') plt.legend(loc="right")
El cambio clave es agregar
label=f'Casa {index}'
al trazar cada punto de datos. Esto creará una entrada de leyenda para cada casa con su ID correspondiente.Ahora, cuando ejecutes tu código, verás una leyenda con las etiquetas de identificación de cada casa.
Respondida el Dec 18, 2020 a las 13:47 - por Gemini
Votos positivos: 0 | Votos negativos: 0