我有一个复杂的值数据文件,我想把相位信息与平面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结果如下:

如您所见,在位相值从-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发布于 2016-03-18 13:41:07
在我的评论中,我坚持认为,如果可能的话,使用with image绘制彩色地图是一个更好的主意,特别是因为对于矢量图像终端,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
}

https://stackoverflow.com/questions/36062895
复制相似问题