限制调色板中的gnuplot数据并在点之间进行插值(3D)

问题描述 投票:0回答:1

我有一个包含 4 列的数据集:x、y、z、c,以及以下 gnuplot 脚本来绘制数据:

set pm3d interpolate 3,3,3

set palette defined  ( 0 "purple", 1 "blue" , 2 "cyan" , 3 "green" ,4 "orange",5 "red",6 "brown",7 "black",8 "grey" )
 
show palette gradient
sp 'datasets' u 1:2:3:4 palette lt 7 not

它绘制了一个非常漂亮的图,所有数据都是小点,我可以旋转......等等。

我的问题是,如何将绘图限制为颜色 0 和 2(不修改数据文件)。

第二个问题是,如何在数据点之间插入颜色?

plot 3d gnuplot interpolation
1个回答
0
投票
  1. 要过滤数据点,您可以对其中一列使用条件形式

    ?:
    ,例如:

    using 1:2:(($4==0 || $4==2)?$3:1/0):4
    
  2. 要保持色标正确,您必须修复

    cbrange

    set cbrange [0:8]
    
  3. 对于插值:

    set pm3d interpolate
    只有两个参数。 (0,0 为自动)。

因此,我的解决方案:

set pm3d interpolate 0,0

set palette defined  ( 0 "purple", 1 "blue" , 2 "cyan" , 3 "green" ,4 "orange",5 "red",6 "brown",7 "black",8 "grey" )

# First image: all data
splot '009_d.dat' u 1:2:3:4 palette lt 7 notitle

# Second image: restricted data with wrong colors
splot '009_d.dat' u 1:2:(($4==0 || $4==2)?$3:1/0):4 palette lt 7 notitle

set cbrange [0:8]

# Third image: restricted data with correct colors
splot '009_d.dat' u 1:2:(($4==0 || $4==2)?$3:1/0):4 palette lt 7 notitle

# Fourth image: interpolated splot
splot '009_d.dat' u 1:2:3:4 palette lt 7 notitle w pm3d

© www.soinside.com 2019 - 2024. All rights reserved.