我正在为剧情添加标签。我用鼠标跟着这个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。
答案 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只会更新位置并保持文本原样......