2017-07-19 3 views
1

J'ai un fichier de données qui conserve toutes les valeurs de coordonnées x et y pour les cercles de dessin. Chaque cercle représente une région. Jusqu'à présent, j'ai dessiné les cercles. Mais je veux assigner une légende spécifique à chaque ligne du fichier de données. Car après avoir dessiné des régions, je veux mettre quelques points sur ces régions en fonction du numéro de région. Cependant, je ne pouvais pas comprendre comment le faire. Est-ce que quelqu'un qui sait comment attribuer une légende spécifique aux cercles dépend de son numéro de ligne dans le fichier de données. Le fichier de données ressembleComment attribuer un titre spécifique à chaque ligne du fichier de données dans gnuplot

X Y R Légende

5 6 0,1 1

....

et ainsi de suite. Je veux utiliser la dernière colonne comme titre à assigner aux cercles. Y'a-t'il un quelconque moyen d'y arriver?

Répondre

1

Cela dépend de la façon dont vous souhaitez afficher le "titre" correspondant. Supposons que le fichier de données circles.dat contient des données suivantes:

5 6.0 0.1 1 
5 5.5 0.1 2 
4 5.0 0.2 3 

Une option serait de tracer les cercles et utiliser la quatrième colonne comme les étiquettes qui sont placées dans les centres des cercles individuels. Ceci peut être réalisé directement avec le style with labels traçante comme:

set terminal pngcairo 
set output 'fig1.png' 

fName = 'circles.dat' 

unset key 

set xr [3:6] 
set yr [4:7] 

set size square 
set tics out nomirror 
set xtics 3,1,6 
set mxtics 2 
set ytics 4,1,7 
set mytics 2 

plot \ 
    fName u 1:2:3 w circles lc rgb 'red' lw 2, \ 
    '' u 1:2:4 w labels tc rgb 'blue' 

Ce produit: enter image description here

Alternativement, on peut vouloir mettre ces étiquettes dans la légende du graphique. Peut-être il y a une solution plus élégante, pourtant une façon est de parcelle chaque ligne du fichier de données séparément et extraire la quatrième colonne (à utiliser comme titre clé) manuellement:

set terminal pngcairo 
set output 'fig2.png' 

fName = 'circles.dat' 

unset key 

set xr [3:6] 
set yr [4:7] 

set size square 
set tics out nomirror 
set xtics 3,1,6 
set mxtics 2 
set ytics 4,1,7 
set mytics 2 

set key top right reverse 

stat fName nooutput 

plot \ 
    for [i=0:STATS_records-1] fName u 1:2:3 every ::i::i w circles t system(sprintf("awk 'NR==%d{print $4}' '%s'", i+1, fName)) 

Cela donne: enter image description here