gnuplot – 避免插入周期性数据的不连续性

我有一个复值数据文件,我想在平坦的pm3d图中将相位信息与绝对值分开.我在这里定义了-pi和pi之间的循环调色板

set palette model HSV
set palette define (-pi 0 1 1, pi 1 1 1)
set palette maxcolors 1000

即,我将HSV色轮边缘上的两个“红色”分配给相位域的终点(±pi).然后我开始绘制这样的数据:

set pm3d map
set cbrange [-pi:pi]
splot 'datafile' w pm3d

结果如下:
《gnuplot – 避免插入周期性数据的不连续性》

正如您所看到的,当绘图算法插入两个相反的值时,相位值从-pi跳到pi的位置会出现伪影,产生接近0的颜色(青色).有没有办法在gnuplot中避免这个神器?当然,我总是能够以避免不连续性的方式操纵数据,并在标准[-pi:pi]域之外分配阶段,但我宁愿不这样做.

编辑:
您可以使用函数而不是数据文件重现类似于上面的图:

I = {0,1}
set xrange [0:3]
set yrange [0:3]
set isosample 100
splot arg(exp(I*x*y)) w pm3d

最佳答案 我坚持认为,在我的评论中,通常最好是尽可能使用图像进行彩色地图绘制,特别是因为使用矢量图像终端,pm3d的(非)压缩会导致非常大的图像尺寸.但是,您有一个非常具体的情况,因为您想要插值.我已经探索了set pm3d corners2color的不同选项,它决定了相邻网格站点之间的插值是如何完成的.一些选项可能会让你摆脱问题,自己判断:

set palette model HSV
set palette define (-pi 0 1 1, pi 1 1 1)
set palette maxcolors 1000
set pm3d map
set cbrange [-pi:pi]
I = {0,1}
set xrange [0:3]
set yrange [0:3]
set isosample 100

unset tics
unset colorbox

set term pngcairo size 640,4096; set output "out.png"
set multiplot layout 9,1

do for [mode in "mean geomean median min max c1 c2 c3 c4"] {

eval "set pm3d corners2color ".mode

set title mode            
splot arg(exp(I*x*y)) w pm3d not

}

《gnuplot – 避免插入周期性数据的不连续性》

点赞