Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/07/2009, à 08:34

Aurel07

[Gnuplot-py] plot 3d en coordonnées polaires

Bonjour a tous,

Pour mes programmes scientifiques, je commence à utiliser python, scipy et gnuplot-py, mais il me reste quelques problemes avec ce dernier.

Je fais calculer par Python des données de la forme z=f(r,theta) (donc en coordonnées polaires, avec une 3eme dimension qui est la valeur calculée). Je voudrais donc plotter ceci en 3D, a la maniere d'une surface z=f(x,y), mais gnuplot ne semble permettre de faire ca qu'en coordonnées cartesiennes.

Apres quelques essais, je suis arrivé a plotter en parametrique :

set parametric
splot r*cos(theta), r*sin(theta), z(r, theta)

mais ca ne me convient pas car j'aimerai pouvoir y ajouter de la couleur (une echelle de couleur selon l'axe z), et en parametric, ca semble impossible.

Quelqu'un sait faire ?...

Hors ligne

#2 Le 09/07/2009, à 14:22

sensini

Re : [Gnuplot-py] plot 3d en coordonnées polaires

salut,

essaie de regarder du côté de pm3d (set pm3d)


http://doc.ubuntu-fr.org/aptitude
http://bepo.fr
Pensez à chercher sur un moteur de recherche avant de demander http://google.fr/ ;)

Hors ligne

#3 Le 09/07/2009, à 19:18

Aurel07

Re : [Gnuplot-py] plot 3d en coordonnées polaires

Bon en fait, j'ai réussi, mais c'est pas tres élégant parce que je suis obligé de passer par un fichier intermédiaire. Ce fichier est organisé en plusieurs blocs à r fixé, séparé par une ligne vide. Il y a 3 colonnes, une pour r*cos(theta) (donc c'est x en cartesien), une pour y=r*sin(theta) et la derniere pour z. Donc mon fichier est constitué de size(r) blocs de 3 colonnes de longueur size(theta). Et en plottant ca en parametric, ca marche, il reconnait les surfaces d'iso-r et peux me les colorer suivant la valeur de z.

ca donne ca en python :

g('set pm3d')
g('set hidden3d')
g('set pm3d at bs')
g('set pm3d scansbackward')
g('set palette rgbformulae 33,13,10')
g('set ticslevel 1')
g.splot("'Poyntingz' with line")
raw_input('Please press return to print graph...\n')
g.hardcopy('gp_test.ps', enhanced=1, color=1)

avec tout ca, j'ai le plot 3d, avec couleur changeant selon la hauteur, et la carto en dessous (genre pcolor de matlab).

Dernière modification par Aurel07 (Le 09/07/2009, à 19:18)

Hors ligne