gnuplot 中的条件格式

Conditional formatting in gnuplot

我在平板上进行了厚度测量。 gnuplot 中是否有 excel 之类的条件格式选项?我想要四个不同的地块,其值是

  1. 高于给定数字,例如,在本例中为 0.5
  2. 低于0.5
  3. 在给定范围之间,例如 0.5 和 0.51
  4. 只有值 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

谢谢!

您可以像这样绘制条件图,但条件过滤会在您的图表中留下 "holes"。

没有格式化:

set pm3d map
splot "./data" matrix

仅绘制大于 0.5 的值:

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

你看你少了点。如果你过滤得更多,你会丢失更多的点,极端到你可能没有任何东西可以绘制(<0.5),因为没有办法进行插值。您可以做的是用固定值替换范围之外的点。例如,如果值小于 0.5 替换为 0.5,如果它大于 0.53 替换为 0.53:

set pm3d map
splot "./data" matrix u 1:2:( < 0.5 ? 0.5 :  > 0.53 ? 0.53 : )

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

set pm3d map interpolate 32,32
splot "./data" matrix u 1:2:( < 0.5 ? 0.5 :  > 0.53 ? 0.53 : )