Gnuplot - 为超出数据范围的点设置标签

时间:2014-10-31 23:39:37

标签: label range gnuplot

我的问题是如何自动将标签放置在超出绘图范围的数据点的绘图边缘。这将针对异常点进行,如果绘制,则会使绘图的比例倾斜,使得绘图不再有用,但仍需要注意。

例如,我们说我有一个名为“mydata.dat'”的数据文件。看起来像这样:

1   2
3   3  
7   4
8   6
50  8

如果我使用

绘制数据
set yrange [0:10]
set xrange [0:10]
plot 'mydata.dat' w lp pt 1

然后不会绘制最后一点(50,8)。但是,要确认在绘制范围之外有一个点,标签和点将放置在图的边缘(即10,8)处使用

set label "" at 10,8 point pt 1
set label "50" at 9.75,8 right

有没有办法自动化这个过程?一种让GNUplot读取整个数据文件并在图的边缘设置点和标签的方法吗?

1 个答案:

答案 0 :(得分:1)

要绘制超出指定范围的所有点,您需要使用labels绘图样式的第二个绘图命令。

using语句中,您可以检查范围之外的点。如果是,则放置带有相应标签的点,否则跳过该点(使用1/0作为值):

set xrange [0:10]
set yrange [0:10]
set linetype 1 pt 7
plot 'mydata.dat' w lp lt 1, \
     '' using ($1 > 10 ? 10 : 1/0):2:(sprintf('%d', $1)) with labels right offset -2,-0.25 point lt 1 notitle

在这里,我只检查x值是否大于指定的最大x值。也许你需要调整它以便捕捉y方向上的异常值或小于0的异常值。

enter image description here