【问题标题】:Gnuplot--set label for points that exceed data rangeGnuplot——为超出数据范围的点设置标签
【发布时间】:2014-10-31 23:39:36
【问题描述】:

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

例如,假设我有一个名为“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 读取整个数据文件并在绘图边缘设置点和标签的方法?

【问题讨论】:

    标签: label range gnuplot


    【解决方案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 的异常值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多