gnuplot中的条件格式

gnuplot中的条件格式,gnuplot,Gnuplot,我在平板上测量了厚度。gnuplot中是否有类似excel的条件格式选项?我想有四个不同的图,带值 高于给定的数字,例如,在本例中为0.5 低于0.5 在给定范围内,例如0.5和0.51之间 只有值0.5 如何修改下面的代码 set pm3d map splot 't.dat' matrix 这是我的数据文件 0.509 0.510 0.515 0.529 0.521 0.516 0.515 0.511 0.506 0.512 0.528

我在平板上测量了厚度。gnuplot中是否有类似excel的条件格式选项?我想有四个不同的图,带值

  • 高于给定的数字,例如,在本例中为0.5
  • 低于0.5
  • 在给定范围内,例如0.5和0.51之间
  • 只有值0.5
  • 如何修改下面的代码

        set pm3d map
        splot 't.dat' matrix
    
    这是我的数据文件

    0.509   0.510   0.515   0.529   0.521   0.516   0.515
    0.511   0.506   0.512   0.528   0.524   0.517   0.512
    0.510   0.506   0.506   0.530   0.524   0.522   0.505
    0.511   0.509   0.513   0.516   0.511   0.520   0.510
    0.524   0.516   0.512   0.511   0.507   0.518   0.492
    0.525   0.521   0.515   0.517   0.518   0.522   0.500
    0.530   0.521   0.513   0.512   0.511   0.519   0.503
    0.562   0.516   0.510   0.516   0.522   0.518   0.508
    0.520   0.518   0.512   0.517   0.518   0.518   0.510
    0.510   0.509   0.503   0.507   0.523   0.519   0.522
    0.506   0.500   0.424   0.507   0.523   0.527   0.519
    0.509   0.430   0.500   0.513   0.519   0.528   0.524
    0.506   0.503   0.503   0.506   0.513   0.528   0.533
    0.506   0.517   0.519   0.524   0.524   0.526   0.528
    0.525   0.517   0.499   0.520   0.521   0.524   0.518
    0.519   0.518   0.516   0.519   0.521   0.520   0.519
    0.521   0.502   0.515   0.518   0.518   0.523   0.522
    0.515   0.519   0.519   0.534   0.524   0.525   0.516
    0.517   0.510   0.522   0.532   0.533   0.530   0.525
    0.520   0.457   0.526   0.530   0.530   0.531   0.524
    0.530   0.520   0.531   0.529   0.527   0.526   0.524
    

    谢谢

    您可以这样做条件图,但条件过滤会在图形中留下“洞”

    无格式:

    set pm3d map
    splot "./data" matrix
    

    仅打印大于0.5的值:

    set pm3d map
    splot "./data" matrix u 1:2:($3 > 0.5 ? $3 : 1/0)
    

    你看你少了点。如果你过滤得更多,你会丢失更多的点,甚至你可能没有任何东西可以绘制(小于0.5),因为没有插值的方法。您可以做的是用固定值替换范围外的点。例如,如果值小于0.5,则替换为0.5;如果值大于0.53,则替换为0.53:

    set pm3d map
    splot "./data" matrix u 1:2:($3 < 0.5 ? 0.5 : $3 > 0.53 ? 0.53 : $3)
    
    设置pm3d地图
    splot.“/data”矩阵u 1:2:($3<0.5?0.5:$3>0.53?0.53:$3)
    

    为了更好地显示这些小矩阵,可以考虑插值:

    set pm3d map interpolate 32,32
    splot "./data" matrix u 1:2:($3 < 0.5 ? 0.5 : $3 > 0.53 ? 0.53 : $3)
    
    设置pm3d贴图插值32,32
    splot.“/data”矩阵u 1:2:($3<0.5?0.5:$3>0.53?0.53:$3)
    

    这是可以做到的,但是对于那些值超出范围的点,您想在热图上显示什么?也许可以选择为这些值绘制等高线。@Miguel,值超出范围用白色表示?这样我就可以从图中直观地了解板块厚度的情况了。@kuki,你检查过我的答案了吗?这对你有用吗?您可以通过跳过数据(答案中的第二个选项)或创建一个调色板来获得白色,其中白色被分配给最大或最小范围:
    设置调色板定义(0.5“白色”,0.50000001“黑色”,0.52333“8A2BE2”,0.54667“红色”,0.57“黄色”)
    然后将数据点截断为该值(
    0.5
    )我在回答中解释了一个有条件的情节。谢谢米格尔。我有一两个问题。希望你能根据自己的解决方案回答这些问题。@kuki只要问一下就行了。这就是这么做的目的。我得到了条件部分,但无法用谷歌搜索出为什么在1:2:($3>0.5?$3:1/0)中只有第1、2和3列。它更像是行:列:值吗?是的,对于
    矩阵
    使用
    选项的工作方式不同。它的索引不是列,而是指数据点在网格上的位置。3现在表示每个数据点的值。