2017-05-04 1 views
1

J'ajoute des étiquettes à un tracé. J'ai suivi ce tutorial for moving label to best position avec la souris et j'ai été heureux de découvrir que l'étiquette peut être réécrite à la position de la souris. Mais une fois cela fait, je n'ai trouvé aucun moyen d'obtenir la valeur textuelle de l'étiquette si l'on veut déplacer l'étiquette plus tard (si besoin est pour ajuster la position plus précisément lorsque le zoom dit) sans copier/coller le le texte de l'étiquette.Obtenir la valeur de l'étiquette gnuplot?

Dans le script, le texte est entré et conservé, mais je voudrais déplacer l'étiquette avec son identifiant uniquement et obtenir le texte ou tout autre moyen de déplacer l'étiquette.

gnuplot> set label 1 "square" at 0,0 
> show label 
label 1 "square" at (0.00000, 0.00000, 0.00000) 
> moveLabel(labelId, text) = sprintf('call "label_loop.gnu" "%s" "%d"', text, labelId) 
> eval moveLabel(1, "square") -> should be: eval moveLabel(1) 

'label_loop.gnu' pour gnuplot-5.0 est the comment part.

Merci pour tout conseil gnuplot! Cordialement

Répondre

2

Puisque vous mentionnez que vous voulez appeler la fonction comme eval moveLabel(1), je suppose que l'étiquette a été précédemment définie dans votre script en utilisant set label .... Si tel est le cas, vous pouvez modifier label_loop.gnu comme:

#make sure that label_number is an integer and not a string so that 
#it is not "misinterpreted" in "set label" 
label_number = int(ARG1); 

pause mouse any "adjust label" 

#any other button will quit the loop 
if(MOUSE_BUTTON == 1) { 

    #using ARG1 instead of label_number or int(ARG1) would 
    #create a new label with the content of ARG1 as its text 
    set label label_number at MOUSE_X,MOUSE_Y 

    print "\n moved label ".ARG1." to position: ",MOUSE_X,MOUSE_Y 
    replot 
    call 'label_loop.gnu' ARG1 
} 

puis l'utiliser à partir du script principal par exemple comme:

set term x11 
set mouse 

set label 1 "square" at 0,0 
moveLabel(labelId) = sprintf('call "label_loop.gnu" "%d"', labelId) 

plot x 

eval moveLabel(1) 

Le « truc » est ici que si vous appelez la set label commande sans aucun texte, Gnuplot met juste à jour la position et garde le texte tel qu'il était ...

+0

Merci beaucoup! Je ne savais pas que je ne pouvais utiliser que "set label {}" sans "