作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个复值数据文件,我想在平面 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
最佳答案
我坚持在我的评论中,只要有可能,使用和图像
来绘制彩色图通常是一个更好的主意,特别是因为使用矢量图像终端时,的(非)压缩>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
}
关于gnuplot - 避免对周期性数据进行不连续插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36062895/
我是一名优秀的程序员,十分优秀!