【问题标题】:How to plot line with missing data points in gnuplot如何在gnuplot中绘制缺少数据点的线
【发布时间】:2012-08-22 16:18:31
【问题描述】:

例子:

我想像上面那样绘制一个图表:一条缺少一些数据点的线,这意味着这条线是不连续的。

我该怎么做?

【问题讨论】:

    标签: gnuplot


    【解决方案1】:

    这取决于您的数据文件是什么样的。如果您在数据文件中插入空格,它将不会连接那些相邻的点(这是最简单的方法):

    考虑:

     #datafile
     1 2
     2 3
    
     4 2
     5 3
    

    然后是绘制它的脚本:

     plot 'datafile' u 1:2 w linespoints
    

    您还可以使用其他技巧来处理丢失的数据:set datafile missing。内置帮助 (help missing) 是一个很好的参考。

    【讨论】:

    • 谢谢,但我的数据文件不只是包含 2 列:
    • 谢谢,但我的数据文件包含许多列,其中只有 1 列缺少数据点。所以我不能添加一个空行,这会导致其他列/行不连续。让我试着为这个专栏附加一个单独的文件,它可能会起作用。
    • @CharryWong -- 这就是我的答案中set datafile missing 部分的用武之地。
    • 我确实尝试过“设置数据文件丢失”,该行仍然是连续的。但最后我想通了,我不能使用'using 5',我需要使用'using ($5)'。
    • gnuplot doc:需要注意的是,使用 1:2 绘制 'file'、绘制 'file' 和使用 ($1):($2) 绘制'file' 可能略有不同:1)如果文件有一些行有一列,一些行有两列,第一个将在缺少 x 值时发明 x 值,第二个将悄悄地忽略一列的行,第三个将为具有一个点的行存储一个未定义的值(所以在带有线条的图中,没有线条连接坏点上的点); 2)如果一行在第一列包含文本,第一列将中止绘图错误,但第二和第三应该悄悄地跳过垃圾。
    【解决方案2】:

    对于单个绘图,使用set datafile missing 指定表示缺失值的字符串,并使用using $ 说明符确保gnuplot 在行中为缺失值留出空隙。 gnuplot documentation for set datafile missing 中描述了不同的 using 说明符。

    在列号被指定为变量的地方,这有点棘手。例如,要绘制文件的多列,可以使用变量指定列号:

    do for [i=2:10] {
        plot 'datafile' using ($1):i with lines
    }
    

    但是,如果我们尝试使用$ 语法,它就不起作用了:

    do for [i=2:10] {
        plot 'datafile' using ($1):($i) # ERROR!
    }
    

    解决方案是使用column function,它也会为缺失值留下空白:

    do for [i=2:10] {
        plot 'datafile' using ($1):(column(i)) with lines
    }
    

    【讨论】:

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