2017-05-04 6 views
1

Ich füge Etiketten zu einem Plot hinzu. Ich habe diese tutorial for moving label to best position mit der Maus verfolgt und war froh zu entdecken, dass Label an der Mausposition neu geschrieben werden kann. Aber sobald es fertig ist, habe ich keine Möglichkeit gefunden, den Textwert des Etiketts zu bekommen, wenn man das Etikett zu einem späteren Zeitpunkt verschieben will (wenn man beim Zoomen die Position genauer einstellen muss) ohne das Kopieren/Einfügen EtikettentextGet gnuplot label value?

Im Skript wird der Text eingegeben und beibehalten, aber ich möchte nur das Label mit seiner ID verschieben und den Text oder eine andere Möglichkeit zum Verschieben des Labels erhalten.

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' für gnuplot-5.0 ist the comment part.

Danke für jeden Gnuplot Tipp! Mit freundlichen Grüßen

Antwort

2

Da Sie erwähnen, dass Sie die Funktion nur als eval moveLabel(1) aufrufen möchten, nehme ich an, dass das Label zuvor in Ihrem Skript mit set label ... festgelegt wurde. Wenn dies der Fall ist, könnten Sie ändern label_loop.gnu wie:

#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 
} 

und es dann aus dem Hauptskript verwenden, zB als:

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) 

Der „Trick“ ist hier, dass, wenn Sie die set label nennen Befehl ohne irgendeinen Text, Gnuplot aktualisiert nur die Position und behält den Text, wie es war ...

+0

Vielen Dank! Ich wusste nicht, dass ich nur "set label {}" ohne "