【发布时间】:2018-10-22 22:02:45
【问题描述】:
我正在尝试从数据中生成热图,例如绘图。数据以
的形式给出# x y f(x,y)
1.02 0.98 23.943
1.99 0.99 24.05
.99 2.01 22.00
...
上面没有真正的网格,它们只是一些随机点和它们的特定值。否则,据我所知,我可以使用image 之类的东西。
为了说明我的问题,我为二维高斯峰值创建了一个数据文件(请参阅pastebin)。数据说明:
现在使用
set view map
set dgrid3d 50,50,2
set pm3d at b
unset key
unset surface
splot "data.txt" # using 2d gauss data as example
给我一个类似下面的情节:
我不明白的是彩色表面和绘图实际边界之间的空白。这里显示在底部、顶部、右侧和左侧。即使我放大到应该使用dgrid3d 创建表面的范围,空白仍然存在,宽度不同。
现在尝试绘图(使用上面的设置)
set isosample 100,100
splot exp(-x**2 -y**2)
给我一个填满整个绘图区域的情节。无论我放大或缩小多远。任何地方都不会出现空格。见:
我在这里找到了这篇文章 (Annoying spacing in gnuplot pm3d color maps),其中 op 回复说,即使通过绘制函数,空格仍然存在:
我刚刚尝试绘制一个简单的 exp(-x²),但差距仍然存在。 :/ – 石鸟 2016 年 6 月 6 日 10:31
但是,他可以通过为 x 和 y 值定义一个非常具体的范围来解决这个问题。但这对我不起作用,因为很难找出这实际上适用于哪些值。
是否有可能从填充整个绘图区域的数据点创建热图,例如绘图?
使用 gnuplot 5.0 补丁级别 6
【问题讨论】:
-
set autoscale xfix; set autoscale yfix -
@Christoph 这适用于适合文件中存在的所有数据。白色的缝隙消失了。谢谢你。然而,当放大时(例如去掉 dgrid3d 生成的波纹边框数据),空白会返回。我试过 'set autoscale keepfix' 但这不起作用。
-
@DirkK。当然:当您开始缩放时,自动缩放会被关闭。 ;-)
-
您可以在线生成示例数据集,在 gnuplot 中:
set table $dataset; splot "+" us (x=(rand(0)-.5)*6):(y=(rand(0)-.5)*6):(exp(-(x**2+y**2))); unset table