我喜欢gnuplot 5中的新超文本功能;但我仍然遗漏了一些东西:我不想只是在一个点附近徘徊阅读一些隐藏文本,但我也希望能够捕获超文本。
如果这个超文本是鼠标变量(就像MOUSE_X和MOUSE_Y一样),捕获它将是一件容易的事;然而,情况似乎并非如此。
有没有人有办法解决这个问题?
答案 0 :(得分:0)
在这方面,可能很有趣,在最新版本(-rc1
)中,一次单击鼠标左键即可将超文本复制到剪贴板中,请参见https://stackoverflow.com/a/61924355/11769765。
对于gnuplot 5.2等较旧的版本,以下代码是一种(不太有效的)变通方法, 获取最近的数据点:
set print $Data
do for [x=-5:5] {
print x, x**2
}
unset print
set table $Text
plot $Data us (sprintf("x=%g, y=%g",$1,$2)) w table
unset table
array snappoint[1]
set macro
myplot = 'plot $Data u 1:2:($Text[$0+1]) w labels hypertext point pt 7 lc 1 title "f(x)"'
bind Button1 'mx=MOUSE_X; my=MOUSE_Y; i=1;\
set table $distance; \
plot $Data u (d=sqrt(($1-mx)**2+($2-my)**2), di=$0==0?(xi=$1,yi=$2,d):\
(d<di?(i=int($0+1),xi=$1,yi=$2,d):di), d) w table;\
unset table;\
print i," ", $Text[i];\
@myplot, snappoint us (xi):(yi) pt 6 ps 2 lc 3 t $Text[i]'
@myplot
左键单击最接近的点并打印例如3 x=-3, y=9
进入控制台。
为简单起见,此处仅使用轴坐标来计算距离,而屏幕坐标会更好。可以使用变量GPVAL_X_MIN
等进行转换。