Estoy tratando de hacer un diagrama de dispersión y anotar puntos de datos con diferentes números de una lista. Entonces, por ejemplo, quiero trazar y
vs x
y anotar con los números correspondientes de n
.
y = [2.56422, 3.77284, 3.52623, 3.51468, 3.02199]
z = [0.15, 0.3, 0.45, 0.6, 0.75]
n = [58, 651, 393, 203, 123]
ax = fig.add_subplot(111)
ax1.scatter(z, y, fmt='o')
¿Algunas ideas?
python
matplotlib
text
scatter-plot
annotate
Labibah
fuente
fuente
Respuestas:
No conozco ningún método de trazado que tome matrices o listas, pero podría usarlo
annotate()
mientras itera sobre los valoresn
.Hay muchas opciones de formato para
annotate()
, consulte el sitio web matplotlib:fuente
regplot
s sin demasiada interrupción, también.KeyError
- ¿así que supongodict()
que se espera un objeto? ¿Hay alguna otra manera de etiquetar los datos utilizandoenumerate
,annotate
y una trama de datos pandas?for row in df.iterrows():
y luego acceder a los valores conrow['text'], row['x-coord']
etc. Si publica una pregunta por separado, la echaré un vistazo.En versiones anteriores a matplotlib 2.0,
ax.scatter
no es necesario trazar texto sin marcadores. En la versión 2.0,ax.scatter
deberá establecer el rango y los marcadores adecuados para el texto.Y en este enlace puedes encontrar un ejemplo en 3d.
fuente
plt.figure(figsize=(20,10))
no funcionan como se esperaba, en el sentido de que invocar este código en realidad no cambia el tamaño de la imagen. Esperamos su ayuda. ¡Gracias!En caso de que alguien esté tratando de aplicar las soluciones anteriores a .scatter () en lugar de a .subplot (),
Traté de ejecutar el siguiente código
Pero se encontraron con errores que indican "no se puede desempaquetar el objeto PathCollection no iterable", con el error apuntando específicamente a la línea de código fig, ax = plt.scatter (z, y)
Finalmente resolví el error usando el siguiente código
No esperaba que hubiera una diferencia entre .scatter () y .subplot () debería haberlo sabido mejor.
fuente
También puede usar
pyplot.text
(ver aquí ).fuente
Python 3.6+:
fuente
Como una línea usando la comprensión de la lista y numpy:
[ax.annotate(x[0], (x[1], x[2])) for x in np.array([n,z,y]).T]
La configuración es lo mismo que la respuesta de Rutger.
fuente
Me encantaría agregar que incluso puedes usar flechas / cuadros de texto para anotar las etiquetas. Esto es lo que quiero decir:
Lo que generará el siguiente gráfico:
fuente