Gnuplot:显示包含z值的鼠标悬停工具提示

Gnuplot:显示包含z值的鼠标悬停工具提示,gnuplot,Gnuplot,我希望gnuplot终端能够动态地显示工具提示窗口或标签之类的东西,该窗口或标签显示了相应打印单元的z值(在单击它之后或由mouseover事件触发)。我的终端类型是wxt,而wxt似乎只支持在状态栏的左下角显示鼠标坐标。工具提示的另一种替代方法是将状态栏中显示的坐标替换为z值。换句话说:我需要一些功能来动态显示鼠标位置的z值 下面是一个快速示例(在鼠标悬停或单击鼠标右键时,我希望看到相应正方形的z值): 这是对应的gnuplot输入: unset key set cbrange [0:6]

我希望gnuplot终端能够动态地显示工具提示窗口或标签之类的东西,该窗口或标签显示了相应打印单元的z值(在单击它之后或由mouseover事件触发)。我的终端类型是
wxt
,而
wxt
似乎只支持在状态栏的左下角显示鼠标坐标。工具提示的另一种替代方法是将状态栏中显示的坐标替换为z值。换句话说:我需要一些功能来动态显示鼠标位置的z值

下面是一个快速示例(在鼠标悬停或单击鼠标右键时,我希望看到相应正方形的z值):

这是对应的gnuplot输入:

unset key
set cbrange [0:6]
set xrange [0:10]
set yrange [0:5]
set size ratio -1
set cbtics out nomirror
set palette maxcolors 12 model RGB defined (0 '#1a9641', 1 '#a6d96a', 2 '#ffffbf', 3 '#fdae61', 4 '#d7191c')
$map1 << EOD
5.5 4.0 3.5 1.0 0.5 5.0 4.5 3.0 1.5 0.0
2.0 2.5 0.0 5.5 5.5 4.5 3.0 0.5 0.0 1.5
0.5 0.0 0.5 5.5 5.5 0.0 0.5 0.0 1.5 0.0
0.0 0.5 0.0 2.5 3.0 0.5 0.0 0.5 2.0 3.5
0.5 1.0 2.5 4.0 3.5 2.0 2.5 0.0 0.5 1.0
EOD
plot '$map1' using ($1+.5):($2+.5):($3) matrix with image
unset键
设置cbrange[0:6]
设置xrange[0:10]
设置Y范围[0:5]
设置大小比率-1
将cbtics设置为默认错误
设置调色板maxcolors 12模型RGB定义(0'#1a9641',1'#a6d96a',2'#ffffbf',3'#fdae61',4'#d7191c')
$map1您可以使用它,但是将数据块中的数据转换为单个标签需要一些工作。如果添加以下代码段

do for [row=1:5] {
   rowdata = $map1[row]
   col = 1
   do for [value in rowdata] {
      set label value at col-0.5,row-0.5 center back  hypertext point pt 4 ps 8
      col = col+1
   }
}
绘图之前将脚本添加到
即可获得所需内容:


它的工作原理是在图像背景中放置一个大致与单元格大小相同的正方形点,并使每个点成为显示其值的超文本的锚。将
back
替换为
front
以查看和调整这些点的大小。

使用
绘图来绘制数据。。。使用标签超文本
可获取带有标签的点,这些标签在您将鼠标悬停在相应点上时显示。由于
超文本
选项仅在打印点时有效,因此必须首先使用超文本标签打印点,然后打印图像:

unset key
set cbrange [0:6]
set xrange [0:10]
set yrange [0:5]
set size ratio -1
set cbtics out nomirror
set palette maxcolors 12 model RGB defined (0 '#1a9641', 1 '#a6d96a', 2 '#ffffbf', 3 '#fdae61', 4 '#d7191c')
$map1 << EOD
5.5 4.0 3.5 1.0 0.5 5.0 4.5 3.0 1.5 0.0
2.0 2.5 0.0 5.5 5.5 4.5 3.0 0.5 0.0 1.5
0.5 0.0 0.5 5.5 5.5 0.0 0.5 0.0 1.5 0.0
0.0 0.5 0.0 2.5 3.0 0.5 0.0 0.5 2.0 3.5
0.5 1.0 2.5 4.0 3.5 2.0 2.5 0.0 0.5 1.0
EOD
plot '$map1' using ($1+0.5):($2+0.5):(sprintf("%.1f", $3)) matrix with labels hypertext point pointsize 6,\
     '$map1' using ($1+.5):($2+.5):($3) matrix with image
unset键
设置cbrange[0:6]
设置xrange[0:10]
设置Y范围[0:5]
设置大小比率-1
将cbtics设置为默认错误
设置调色板maxcolors 12模型RGB定义(0'#1a9641',1'#a6d96a',2'#ffffbf',3'#fdae61',4'#d7191c')

$map1谢谢。这正是我想要的。我的真实数据来自.dat文件。有没有办法从这个来源生成超文本点呢?我喜欢这个解决方案。这只是一个额外的行,可以使用dat输入文件以及数据块变量。但是我注意到,
wxt
与大的输入矩阵(在我的例子中是180x150)结合在一起时会非常慢。我认为为矩阵的每个值绘制所有这些标签和点对于终端来说太多了。但对于较少的数据,这种解决方案似乎是完美的。我想知道是否有另一种解决方案不会降低终端速度,但与您的解决方案一样有效。相关: