2011-05-25 18 views
11

Matlab et Mathematica ont toutes deux des fonctionnalités qui permettent à l'utilisateur de manipuler le contenu d'un graphique en utilisant, par exemple, un curseur. Par exemple, si vous disposez d'un ensemble de données 3D, il est facile de créer un petit programme qui vous permet d'afficher des tranches 2D d'un ensemble de données 3D dans lesquelles l'utilisateur peut faire glisser un curseur pour parcourir la section affichée. Y a-t-il quelque chose en python qui permette ce genre de capacité sans trop d'efforts? Par exemple, est-il possible de faire une telle chose dans matplotlib, ou quelque chose de similaire? ITracé interactif en Python?

Merci.

Répondre

5

Ma première pensée serait Mayavi, ce qui est idéal pour la visualisation de données, en particulier en 3D. Il repose sur VTK. Il est inclus dans la version aromatisée Enthought de Python, avec Chaco pour le traçage 2D. Pour avoir une idée, regardez le beau screencast de Travis Vaught au Multidimensional Data Visualization in Python - Mixing Chaco and Mayavi.

Il est également possible d'intégrer des fonctionnalités interactives de base (comme le curseur) à Matplotlib, voir matplotlib.widgets et les exemples de widgets.

Enfin, vous pouvez utiliser rpy (ou mieux, rpy2) et bénéficier de l'interface R.

+0

Cela semble très prometteur, merci. – Chironex

+0

En plus de cela, IPython a maintenant de nouvelles capacités de traçage interactives. (Consultez la version 2.1!) – daviewales

1

Avez-vous regardé Vtk? http://www.vtk.org/ Une de leurs démos fait exactement ce que vous demandez.

1

En principe, vous pouvez le faire à l'aide de MathGL. C'est une bibliothèque GPL multiplateforme pour le traçage.

Pour chaque clic de souris, vous pouvez trouver la position x, y, z dans le tracé ou l'objet cliqué et ajuster (replot) d'autres informations en conséquence. Cependant, vous devez gérer les clics de souris par vous-même (par exemple, en utilisant PyQt).

1

Une autre option consiste à utiliser python dans l'interface de calcul SAGE/environnement, qui a la commande @interact (voir here pour une aide spécifique sur cette commande)