Cómo cambiar los marcadores predeterminados en scatterplot Python
Estoy intentando agregar marcadores meteorológicos en lugar de círculos básicos en un gráfico de dispersión. Más específicamente, me gustaría mostrar cambios físicos y mentales dependiendo de las condiciones meteorológicas. Para este propósito, me gustaría utilizar algunos iconos meteorológicos (archivos .svg) en lugar de círculos de diferentes colores. Sin embargo, obtengo el siguiente error:
TypeError: tipo no hashable: ‘Path’
Aquí está mi código:
clear_marker = parse_path(“M 350.04,161.95
C 350.04,161.95 391.76,120.24 391.76,120.24M 120.24,391.76
C 120.24,391.76 161.96,350.04 161.96,350.04M 389.00,256.00
C 389.00,256.00 448.00,256.00 448.00,256.00M 64.00,256.00
C 64.00,256.00 123.00,256.00 123.00,256.00M 350.04,350.04
C 350.04,350.04 391.76,391.76 391.76,391.76M 120.24,120.24
C 120.24,120.24 161.96,161.95 161.96,161.95M 256.00,389.00
C 256.00,389.00 256.00,447.99 256.00,447.99M 256.00,64.00
C 256.00,64.00 256.00,123.00 256.00,123.00M 157.56,216.68M 150.90,242.12
C 150.31,246.60 150.00,251.26 150.00,256.00
150.00,256.01 150.00,256.02 150.00,256.02
150.00,314.57 197.46,362.02 256.00,362.02
314.54,362.02 362.00,314.57 362.00,256.02
362.00,197.48 314.54,150.02 256.00,150.02
220.35,150.02 188.80,167.63 169.59,194.62M 276.00,170.00
C 217.46,170.00 170.01,217.46 170.01,276.00
170.01,300.17 178.09,322.45 191.71,340.28
209.54,353.90 231.82,361.99 255.99,361.99
314.53,361.99 361.99,314.53 361.99,255.99
361.99,231.83 353.90,209.55 340.29,191.72
322.52,178.10 300.28,170.00 276.16,170.00
276.11,170.00 276.05,170.00 276.00,170.00
276.00,170.00 276.00,170.00 276.00,170.00 “)
plt.plot(x, y, ‘o’, marker=clear_marker)
(Sólo he probado en el primer marcador para ver si funcionaba)
GRACIAS.
davy.ai
El mensaje de error indica que el objeto
Path
no es hasheable. Esto se debe probablemente a que los objetosPath
son mutables, lo que significa que su estado puede ser cambiado después de haber sido creados. En Python, solo se pueden utilizar objetos inmutables como claves en un diccionario, lo que ocurre en segundo plano cuando se usa un marcador en un gráfico.Para solucionar este problema, puedes crear un nuevo marcador usando un objeto
Path
y luego convertirlo en un objetoPathPatch
. Esto lo hará hasheable y por lo tanto utilizable como un marcador enmatplotlib
. Aquí tienes un ejemplo:En este ejemplo, hemos creado un nuevo objeto
Path
para el icono del clima utilizando las coordenadas del métodoparse_path
original. Luego utilizamos el constructorPathPatch
para crear un nuevo marcador a partir del path, especificando que elfacecolor
debería sernone
y eledgecolor
debería ser azul. Finalmente, utilizamos el nuevo marcador en nuestro gráfico.¡Espero que esto te ayude!