Pregunta

En una respuesta a una pregunta anterior sobre la fijación del espacio de colores para las imágenes de dispersión de datos 4D, Tom10 sugirió trazar valores como símbolos para verificar mis datos. Una excelente idea. He ejecutado algunas demostraciones similares en el pasado, pero no puedo por mi vida encontrar la demostración que recuerdo es bastante simple.

Entonces, ¿cuál es la forma más fácil de trazar valores numéricos como símbolo en una trama de dispersión en lugar de 'O', por ejemplo? Tom10 sugirió plt.txt (x, y, valor), y esa es la implementación utilizada en varios ejemplos. Sin embargo, me pregunto si hay una manera fácil de evaluar el "valor" de mi variedad de números. ¿Se puede simplemente decir: STR (ValueArray)?

¿Necesita un bucle para evaluar los valores para trazar como se sugiere en la sección de demostración de matplotlib para Gráficos de dispersión de texto 3D?

Su ejemplo produce:

alt text
(fuente: SourceForge.net)

Sin embargo, están haciendo algo bastante complejo en la evaluación de las ubicaciones, así como cambiar la dirección del texto en función de los datos. Entonces, ¿hay una forma linda de trazar datos X, Y, C (donde C es un valor a menudo tomado como el color en los datos de la trama, pero en su lugar deseo hacer el símbolo)?

Una vez más, creo que tenemos una respuesta justa a esto. Me pregunto si hay una manera más fácil.

¿Fue útil?

Solución

La forma más fácil que he visto hacer esto es:

for x, y, val in zip(x_array, y_array, val_array):
    plt.text(x, y, val)

Además, por cierto, sugirió usar STR (Valarray), y esto, como puede haber notado, no funciona. Para convertir una variedad de números en una secuencia de cadenas que pueda usar

valarray.astype(str)

para obtener una matriz numpy, o, o

[str(v) for v in valarray]

Para obtener una lista de Python. Pero incluso con ValArray como una secuencia adecuada de cadenas, Plt.text no se iterará sobre sus entradas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top