我有一个包含 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(不修改数据文件)。
第二个问题是,如何在数据点之间插入颜色?
要过滤数据点,您可以对其中一列使用条件形式
?:
,例如:
using 1:2:(($4==0 || $4==2)?$3:1/0):4
要保持色标正确,您必须修复
cbrange
:
set cbrange [0:8]
对于插值:
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