gnuplot - 避免对周期性数据进行不连续插值

标签 gnuplot

我有一个复值数据文件,我想在平面 pm3d 图中绘制与绝对值分开的相位信息。我在 -pipi 之间定义了一个循环调色板,如下所示

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

结果如下所示: Phase plot with apparent discontinuity at +/- pi

正如您所看到的,当绘图算法对两个相反的值进行插值时,相位值从 -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 pm3dcorns2color 的不同选项,它决定了相邻网格站点之间的插值是如何完成的。有些选项可能会解决您的问题,请自行判断:

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

}

enter image description here

关于gnuplot - 避免对周期性数据进行不连续插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36062895/

相关文章:

python - gnuplot multiplot 中的透明背景

linux - 如何在 GNUPLOT 中绘制实时数据?数据来自不断向其记录新数据的文件

gnuplot - 如何在gnuplot中一起使用 "var"和 "palette"?

fonts - Gnuplot 字体嵌入

3d - 如何根据点的类别制作 3D 密度图

gnuplot - 图形和png图像边缘之间没有空间

python - gnuplot vs Matplotlib

GNUPlot:用不同的样式绘制不同的范围

gnuplot - 使用 GNU plot 绘制文件中的数据列表

windows - 如何在 Windows 上安装 GnuPlot?