如何获得gnuplot标签值?

时间:2017-05-04 13:26:48

标签: label gnuplot

我正在为剧情添加标签。我用鼠标跟着这个tutorial for moving label to best position,很高兴发现标签可以在鼠标位置重写。

但是一旦完成,我没有找到任何方法来获取标签的文本值,如果想要稍后移动标签(如果需要在缩放时更准确地调整位置)而不复制/贴上标签的文字。

在脚本中,文本被输入并保留,但我想仅使用其ID移动标签并获取文本或任何其他方式来移动标签。

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'代表gnuplot-5.0为the comment part

1 个答案:

答案 0 :(得分:2)

由于您提到要将该函数调用为eval moveLabel(1),我假设之前已使用set label ...在您的脚本中设置了该标签。如果是这种情况,您可以将label_loop.gnu修改为:

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

然后从主脚本中使用它,例如:

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)

"技巧"这是因为如果你在没有任何文本的情况下调用set label命令,Gnuplot只会更新位置并保持文本原样......