gnuplot ligne de contour couleur: style de ligne et jeu de type de ligne ne fonctionne pas
Je suis tracer des données comme indiqué dans un précédent Stackoverflow question:
gnuplot 2D polaire parcelle avec la heatmap de 3D dataset - il possible?
Surtout, il fonctionne bien pour moi, et je suis à quelques petits détails. L'un de ces est la façon d'exercer un contrôle sur la ligne de contour de couleurs et de largeurs de ligne. Il y a beaucoup de posts sur le web concernant l'utilisation de set style increment user
suivie par la définition du style d'utilisateur via set style line 1 lc rgb "blue" lw 2
etc. En théorie, cela était censé force splot pour tracer des lignes à l'aide de la nouvelle définition des styles. Je l'ai essayé et cela n'a pas fonctionné. En plus, quand je suis allé les pages d'aide, par le biais de mon gnuplot installer, j'ai découvert que cette utilisation est déconseillée avec ma version (Version 4.7 version 0 de la dernière modification 2013-07-25). Il est recommandé d'utiliser un ensemble de type de ligne au lieu de cela, ce qui modifie les caractéristiques de la gnuplot style de ligne de façon permanente pour le courant de l'invocation de gnuplot. Tuer et relancer gnuplot restaure la valeur par défaut de type de ligne caractéristiques.
Ensuite, j'ai redémarré gnuplot, régénéré l'intrigue sans redéfinir tout style de ligne ou de type pour les lignes de contour. Quand j'ai regardé ma parcelle, je pouvais voir que les couleurs des lignes de commencer avec cyan, violet, puis au bleu (comme les types de ligne 5,4,3 ou 14,13,12, etc.). Il me semble que si la ligne sont les types d'aller en ARRIÈRE à travers les styles disponibles. OK, je pensais, je peux juste changer les personnes et de vivre avec le comportement étrange. Cependant, après l'émission de multiples de type de ligne de commandes qui a changé le cours de ces types de lignes à quelque chose qui serait évidemment différent (j'ai vérifié ces en exécutant la test
de commande, les lignes de contour sur la parcelle avait toujours de la même couleur et la largeur de ligne comme avant. Je n'arrive pas à comprendre ce type de ligne est utilisé pour les lignes de contour, donc je ne peux pas changer les fichiers de types de lignes.
Peut-être cet étrange comportement est un résultat de la ligne de contour étant de type set cntrparam levels increment -6,-6,-24
et les valeurs négatives et/ou négatif va incrémenter sont à l'origine de certains comportements imprévisibles?
Je voudrais savoir comment je peux savoir quel type de ligne seront utilisés pour les lignes de contour dans ce complot, et si cela va changer si le nombre de lignes utilisées pour la construction de la surface de la parcelle changement. Par exemple, le tracé indiqué ci-dessous utilise 13 "lignes" pour générer la surface à l'aide de set pm3d map
. Donc, disons N=13 lignes - est-il une règle qui est obligatoire pour la première contour de type de ligne?. Par exemple, j'ai toujours assurez-vous que la ligne de contour style va commencer à N=14? J'aimerais savoir quel type de ligne sera utilisée pour la première et suivantes des lignes de contour, lorsque le nombre de "lignes" à mon entrée des données peut varier.
La ligne de fond est que j'ai besoin pour appliquer ce style aux lignes de contour utilisé pour chaque contour. Je veux utiliser systématiquement le même style pour chaque niveau lorsque les données d'entrée des changements. L'intrigue est toujours utiliser le même ensemble de courbes de niveaux: -6, -12, -18, et -24. L'intrigue de données de toujours avoir un maximum de "z" coordonner d'environ 0 et de diminuer à partir de là.
Gnuplot commandes sont indiquées ci-dessous. Le jeu de données pour cette parcelle peut être téléchargé ici:
http://audio.claub.net/temp/new_test.dat
reset
set terminal pngcairo size 800,800
set output '3d-polar.png'
set lmargin at screen 0.05
set rmargin at screen 0.85
set bmargin at screen 0.1
set tmargin at screen 0.9
set pm3d map interpolate 20,20
unset key
set multiplot
# plot the heatmap
set cntrparam bspline
set cntrparam points 10
set cntrparam levels increment -6,-6,-24
set contour surface
#set style increment user #NOTE: the commented out lines do not seem to affect color or width of the the contour lines no matter what number I use for the linetype
#set linetype 8 lc rgb "blue" lw 2
#set linetype 9 lc rgb "black" lw 1
#set linetype 10 lc rgb "orange" lw 1
#set linetype 11 lc rgb "yellow" lw 1
set palette rgb 33,13,10 #rainbow (blue-green-yellow-red)
set cbrange [-18:0]
unset border
unset xtics
unset ytics
set angles degree
r = 3.31 #This number is Log10(max frequency) - Log10(min frequency) of the polar frequency grid
set xrange[-r:r]
set yrange[-r:r]
set colorbox user origin 0.9,0.1 size 0.03,0.8
splot 'new_test.dat'
# now plot the polar grid only
set style line 11 lc rgb 'black' lw 2 lt 0
set grid polar ls 11
set polar
set logscale r 10
set rrange[10:20000]
unset raxis
set rtics format '' scale 0
#set rtics axis scale
set rtics (20,50,100,200,500,1000,2000,5000,10000,20000)
do for [i=-150:180:30] {
dum = r+0.15+0.05*int(abs(i/100))+0.05*int(abs(i/140))-0.05/abs(i+1)
set label i/30+6 at first dum*cos(i), first dum*sin(i) center sprintf('%d', i)
}
set label 20 at first 0, first -(log(20)/log(10)-1) center "20"
set label 100 at first 0, first -(log(100)/log(10)-1) center "100"
set label 200 at first 0, first -(log(200)/log(10)-1) center "200"
set label 1000 at first 0, first -(log(1000)/log(10)-1) center "1k"
set label 2000 at first 0, first -(log(2000)/log(10)-1) center "2k"
set label 10000 at first 0, first -(log(10000)/log(10)-1) center "10k"
set label 20000 at first 0, first -(log(20000)/log(10)-1) center "20k"
plot NaN w l
unset multiplot
unset output
L'intrigue, sans aucun contrôle sur les lignes de contour est indiqué ci-dessous. J'ai besoin d'être en mesure de spécifier la couleur de la ligne et de la largeur pour les lignes de contour. Comment?
OriginalL'auteur Charlie | 2013-09-18
Vous devez vous connecter pour publier un commentaire.
Voici comment vous pouvez modifier les propriétés de la ligne des lignes de contour. Je ne peux pas expliquer pourquoi c'est de cette façon, je viens de découvrir par essais. Malheureusement, il n'existe pas de documentation sur ces détails.
Le comportement est le suivant (testé avec 4.6.3. et 4.7 (2013-07-25 et 2013-09-09), montrent le même comportement):
Paramètres par défaut
Si aucune
linetype
est spécifié poursplot
, la surface elle-même serait d'utiliserlt 1
. Dans ce cas, le premier contour est dessiné aveclt 3
. Oui, la numérotation est à l'envers par rapport à l'incrément spécifié. Mais vous pouvez l'inverser en utilisantset cntrparam levels increment -6,-6,-18
ouset cntrparam levels increment -18,6,-6
La
linewidth
de tous les contours est la même et aussi égal à lalinewidth
utilisé pour le tracé de commande, pour le modifier à utiliser, par exemple,splot 'new_test.dat' lw 3
.Le résultat (sans les lignes plus épaisses) est, comme indiqué dans la question.
À l'aide de styles de ligne
Les contours d'utiliser le
linestyle
avec un indice par un supérieur à celui utilisé par le tracé de commande.Vous devez également définir la première
linestyle
, qui serait utilisé par la surface. Si ce style n'est pas définie, les contours de revenir à l'utilisation d'linetype
.La
linewidth
est prise à partir de la premièrelinestyle
, tous leslw
paramètres suivantsls
sont ignorés.L'aide personnalisée les types de lignes
Les contours d'utiliser le
linetype
avec un indice par un supérieur à celui utilisé par le tracé de commande.Tous
linetype
doit être personnalisé, la première, celle qui est utilisée par la surface. Sinon, les paramètres par défaut sont utilisés.lw
même que pourlinestyle
.Pour le test j'ai utilisé vos données et les suivantes dépouillé de script:
La
cbrange
est définie seulement en bas à-18
, j'ai donc changé le contour en conséquence (-24
n'était pas dessiné de toute façon).Les deux "contour des fichiers de paramètres', que j'utilise sont:
linetype.gp
:linestyle.gp
:définir le style de l'incrément de l'utilisateur
Les deux donnent la même image de sortie:
À les utiliser pour votre script complet, il suffit de charger l'un des deux fichiers directement avant le
splot
de commande. Cela donne à la sortie:Après votre première question sur les contours, j'étais sur le point de soumettre un rapport de bug, mais il s'est avéré être plutôt difficile de les réduire à des questions concrètes. Avec cette question, il pourrait être plus facile. Je vais voir si je trouver un peu de temps pour ce faire.
set style increment user
et puis les styles définis pour la ligne 1,2,3, etc. Cela a entraîné des lignes à changer de couleur et de l'épaisseur de la mais le résultat semble être aléatoire à l'époque. Le fait que les styles de ligne ont été incrémenté en arrière a également été un mystère, et je n'attendais qu'une seule largeur de raie peut être définie pour toutes les lignes de contour. Il est tout clair maintenant merci pour votre explication.J'ai soumis un rapport de bogue concernant le comportement des lignes de contour avec
set linetype
: #1284 Changement de contour couleurs avec 'ensemble de type de ligne'.OriginalL'auteur Christoph
J'ai dû revenir à cette question quand j'étais encore à faire quelques GNUplot tracé, cette fois en coordonnées rectangulaires, et a constaté que ne pouvait pas se rappeler comment contrôler le type de ligne pour les lignes de contour.
J'ai trouvé que l'information ci-dessus est tout à fait correct, et j'ai découvert une façon d'expliquer comment cela fonctionne de la manière de GNUplot version 5 version 3.
Il y a trois choses que j'ai trouvé pour contrôler les lignes de contour:
1. le " set cntrparam niveaux incrémentation de commande, et
2. la commande 'définir le style de l'incrément de l'utilisateur", et
3. la liste des styles de ligne (j'ai utilisé le 'style' de la commande)
Il s'avère que c'est un peu délicat. Permettez-moi de donner un exemple ou deux de mon propre code:
J'espère que d'autres vont trouver cela utile et instructif. Peut-être Christoph (si il arrive à lire ce fil) peuvent faire des commentaires, depuis GNUplot est un outil évolutif et qu'il allait savoir à ce sujet en détail.
OriginalL'auteur CA_Charlie