【问题标题】:gnuplot badly renders heat map on uneven gridgnuplot 在不均匀的网格上严重渲染热图
【发布时间】:2017-11-02 21:44:02
【问题描述】:

我正在尝试绘制在不均匀网格上获得的 3D 结果热图,即 f(x,y) 函数。 我得到的图在图的顶部给了我一些丑陋的空白。 以下是重现我面临的问题的最小脚本。

#Generate some dummy data
f(x,y) = sqrt(x**2 + y**2)
set table
set samples 1000
set output "table.dat"
splot [0:10][0:10] f(x,y)

绘图脚本:

# plot it
set term x11
set out
set pm3d map 
splot [1:5] [0:2] "table.dat" u ($1):($2/$1):($3)

由于 y 轴值取决于 x 轴,因此网格现在是偶数。如下图所示,gnuplot 无法填充靠近绘图顶部边框的一些空间。更改轴限制没有帮助。

sample impage plot

知道如何填充白色三角形并使该图看起来更好吗?

感谢您的帮助。

【问题讨论】:

  • 很难想象它究竟应该如何看起来更好
  • 您好,这是正确的。我的意思是没有顶部的白色三角形。这里有一些数据要绘制,应该是彩色的。
  • 如果你想填充样本之间的数据点,你必须使用插值,你可以使用set dgrid3d。另外,请注意您的表格在x(1000 点)中的分辨率非常好,但在y(10 点)中的分辨率非常差。使用更精细的网格 (set isosamples 1000),插值效果会更好。
  • 感谢您的建议。我无法更改原始数据采样,上面的脚本只是一个说明。不幸的是,dgrid3d 似乎没有正确处理这种情况,我认为问题出在 y 轴取决于 x 轴的事实:u ($1):($2/$1):($3)。

标签: gnuplot heatmap


【解决方案1】:

您可以使用dgrid3d 进行二维插值。对于您的using 规范($1):($2/$1):($3),您拥有数据点的域非常不规则。通过将所有其他值设置为 NaN,它有助于告诉 dgrid3d 您只对一个小矩形感兴趣。例如:

set pm3d map 
set dgrid3d 100,100 qnorm 4
splot [1:5] [0:2] "table.dat" u ($1 >= 1 && $1 <= 5 ? $1 : 1/0):($2/$1 > 0 && $2/$1 < 2 ? $2/$1 : 1/0):3 

您必须尝试dgrid3d 的各种选项才能获得合理的插值。

【讨论】:

  • 完美!感谢这个技巧!遗憾的是 dgrid3d 没有根据绘图范围执行此操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
  • 2020-06-24
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
  • 2019-03-11
  • 1970-01-01
相关资源
最近更新 更多