Gnuplot : dégradé de couleurs sur une ligne

Résolu
Phoebile -  
 Phoebile -
Bonjour,

Je voulais savoir s'il était possible d'obtenir, avec Gnuplot, un dégradé de couleur sur un segment (reliant deux points grâce à linespoints).

Le graphique que je dois obtenir est en 3d, mais est constitué en fait de plusieurs segments suivant l'axe z et les segments ne sont pas reliés entre eux.

Lorsque j'essaie le pm3d, un warning m'informe qu'il ne peut pas, sous l'option 3d, faire le dégradé sur un simple segment (qui, en soit, n'est qu'en 2d).

Avez-vous une solution plus simple pour faire ça plutôt que de fragmenter chacun de mes segments en petits segments et de leur assigner à chacun la couleur voulue?

Un grand merci,
Cécile


4 réponses

Phoebile
 
Rebonjour!

J'ai un peu avancé : le set parametric était une bonne piste, merci beaucoup ! :

set pm3d
set parametric
const = 60
set urange [13:15]
set vrange [520:800]
set yrange[0:500]
set zrange[300:1000]
unset surface
set palette defined ('je lui mets toutes mes couleurs')
set cbrange[380:1000]
splot const, u, v


ce qui me donne un segment (en fait un parallélépipède de toute petite épaisseur) avec un beau dégradé, et dont les couleurs correspondent bien.

Une petite illustration :
http://zepload.com/images/1286530644_test.JPG

Le problème de ce type d'option, c'est que je ne vois pas du tout comment ajouter d'autres segments, vu que les urange et les vrange sont déjà attribués pour ce segment-là... J'ai essayé avec multiplot mais infructueusement... je vais continuer de tenter ma chance de ce côté là, sauf si vous avez une autre idée?

Le but après serait d'en faire une routine, pour chaque segment, qui corresponde au fichier de données que j'ai, ça ne devrait pas poser de pb, mais il faut d'abord que je passe par la case multiplot...
Encore merci!
1
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
super que tu ais trouvé la solution.
J'ai eu le même problème que toi en ce qui concerne la couleur unique de la surface.
Je n'ai pas bien compris comment tu avais résolue.
multiplot me semble une mauvaise solution, ce n'est pas le but de cette fonction.
normalement, tu peut spécifier les gammes en début de plot :
splot [0:10][20:30] 'file' u 1:2:3 etc.
0
Phoebile
 
En fait le problème de la couleur unique se résout en passant par le set parametric, ce que vous m'aviez proposé dès le début.
Je ne connaissais pas cette nomenclature pour splot, je vais l'essayer tout de suite!
Merci pour tout!
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Salut.
Le mieux est de faire ça en natif plutôt que de bricoler un truc.
Si pm3d ne veux pas fonctionner, c'est que tes données ne s'y prêtent pas. Donne nous la forme de tes données et ce que tu veux tracer (ta commande).
Si tu as des données un peu disparates, tu peux utiliser dgrid3d.
0
Phoebile
 
Bonjour et merci pour votre réponse,

Voici une image de ce que ça devrait donner, pour trois segments ; ils sont suivant l'axe vertical ; et, au lieu que les couleurs des segments soient les couleurs par défaut des plots, je voudrais qu'elles correspondent au dégradé de couleurs correspondant...
http://zepload.com/images/1286448756_test.JPG

Merci aussi pour l'idée du dgrid3d mais je ne suis pas sûre de pouvoir faire ça pour ça?
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Je comprends mieux.
peut être que pm3d avec un splot paramètrique réussirai à donner ce que tu cherche à faire.
Un segment multicolore, je pense que ce n'est pas faisable (je ne vois pas quel sens ça aurait dans Gnuplot), il faut essayer de lui faire dessiner une surface qui se résumera à un segment.
0
Phoebile
 
Bonjour,

J'ai essayé de faire un splot parametric avec un pm3d ; ça ne pose pas de problème si je donne une fonction à gnuplot, en revanche je n'arrive pas à utiliser le set parametric avec un fichier de donnees (trois colonnes pour les 3 coordonnées).

J'ai essayé alors autre chose, j'ai donné une petite épaisseur au segment, pour en faire une surface, et je colore cette surface avec pm3d... le problème c'est que mon segment n'a pas de dégradé de couleur mais se retrouve avec la couleur moyenne correspondante... (pour exemple : un segment entre 520 et 800, qui devrait avoir un dégradé partant du vert au noir, se retrouve avec une unique couleur rouge qui correspond à (520+800)/2=660)

Vous avez des idées pour l'une ou l'autre des méthodes?... je suis un peu bloquée :-s

Merci de votre aide!
0