在这方面,可能很有趣的是,在最新版本中(-rc1
)单击左键即可将超文本复制到剪贴板,请参阅https://stackoverflow.com/a/61924355/11769765 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
, etc.