2010-06-02 5 views
3

Dans une réponse à une question précédente concernant la fixation de l'espace colorimétrique pour les images de diffusion de données 4D, Tom10 a suggéré de représenter les valeurs sous forme de symboles afin de revérifier mes données. Une excellente idée. J'ai fait des démos similaires dans le passé, mais je ne peux pas pour la vie de moi trouver la démo dont je me souviens être assez simple. Donc, quel est le moyen le plus simple de tracer des valeurs numériques comme le symbole dans un nuage de points au lieu de 'o' par exemple? Tom10 a suggéré plt.txt (x, y, value) - et c'est la mise en œuvre utilisée dans un certain nombre d'exemples. Je me demande cependant s'il existe un moyen facile d'évaluer la «valeur» de mon tableau de nombres? Peut-on simplement dire: str (valuearray)?Le moyen le plus simple de tracer des valeurs sous forme de symboles dans un nuage de points?

Avez-vous besoin d'une boucle pour évaluer les valeurs de traçage comme suggéré dans la section de démonstration matplotlib pour 3D text scatter plots?

Leur exemple produit:

alt text http://matplotlib.sourceforge.net/_images/text3d_demo.png

Cependant, ils font quelque chose d'assez complexe dans l'évaluation de l'emplacement ainsi que la direction de changement de texte basé sur des données. Donc, y a-t-il une façon mignonne de tracer les données x, y, C (où C est une valeur souvent prise comme couleur dans les données de tracé - mais je souhaite plutôt faire le symbole)?

Encore une fois, je pense que nous avons une réponse juste à ceci- je me demande simplement s'il y a un moyen plus facile?

Répondre

2

La meilleure façon que je l'ai vu le faire est:

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

aussi, d'ailleurs, vous a suggéré d'utiliser str (valarray), et, comme vous avez pu le constater ne fonctionne pas. Pour convertir un tableau de nombres à une séquence de chaînes que vous pouvez utiliser

valarray.astype(str) 

pour obtenir un tableau numpy, ou,

[str(v) for v in valarray] 

pour obtenir une liste Python. Mais même avec Valarray comme une séquence appropriée de chaînes, plt.text ne va pas itérer sur ses entrées.

+0

oh! - donc vous avez besoin de parcourir pour plt.text? (désolé, je n'ai pas vérifié stackoverflow récemment - manqué votre réponse, Tom!) – AllenH

Questions connexes