gpt4 book ai didi

Gnuplot:未定义/缺失数据点和绘图样式 'with image'

转载 作者:行者123 更新时间:2023-12-03 16:15:27 42 4
gpt4 key购买 nike

我必须创建一个颜色图,而“带图像”的绘图风格正是我想要的。 (在位置 x,y 处绘制 z 的确切值,因此使用 pm3d 对我来说不是一种选择)

问题是,我的数据文件中有未定义的点。例如,该函数表示质量比,因此负 z 值没有物理意义,我想省略它们。或者一些 z 值甚至是“NaN”。

示例数据文件:

1.0   1.0    1.5
1.0 2.0 1.7
1.0 3.0 1.9
2.0 1.0 1.6
2.0 2.0 1.8
2.0 3.0 2.0
3.0 1.0 1.7
3.0 2.0 1.9
3.0 3.0 -1.0

所以我不想在 (3,3) 位置绘制值 -1,而是将 (3,3) 处的像素留空。

我试过这个:
plot './test.dat' u 1:2:($3>0 ? $3 : 1/0) with image

但它不起作用。它说:

warning: Number of pixels cannot be factored into integers matching grid. N = 8 K = 3


set datafile missing "NaN"

在 -1.0 被“NaN”替换的情况下也不起作用。

我发现的唯一选择是:
set pointsize 10
plot './test.dat' u 1:2:($3>0 ? $3 : 1/0) palette pt 5

但随后我必须手动调整每个绘图的点大小、x 和 y 范围以及绘图大小,以便数据点没有空格或重叠。 (见 this question。)

因此,长话短说:有什么方法可以使用带有未定义/缺失数据点的“带图像”绘图样式并将这些点保留为白色?

最佳答案

在这种情况下,我还没有找到让 gnuplot 很好地处理 NaN 的方法。它将它设置为 1 对我来说,这看起来很奇怪,但可能是“plot ... with image”如何处理丢失数据的一个特征。

如果您只想消除负数,可以使用一种技巧:

#!/usr/bin/env gnuplot

set terminal png
set output 'test.png'

filter(x) = (x > 0) ? x : 1/0
philter(x) = (x > 0) ? x : 0

# just in case
set zero 1e-20

# make points set to zero be white
set palette defined (0 1.0 1.0 1.0, \
1e-19 0.0 0.0 1.0, \
1 1.0 0.0 0.0)

# get min/max for setting color range
stats 'test.dat' u (filter($3)) nooutput

# set color range so minimum value is not plotted as white
set cbrange [STATS_min*(1-1e-6):STATS_max]

plot './test.dat' u 1:2:(philter($3)) with image

在您的数据文件上,它会生成此图:
enter image description here

这不是很理想,因为颜色条底部有那个白色位,它不处理 NaN。无法摆脱白色位的原因是,在设置调色板时,所使用的数字只是自动缩放以适应任何颜色条,并且调色板中有离散数量的插槽(256?)。因此,调色板中的第一个槽将始终显示调色板开头的值(白色),无论调色板中的下一个颜色是否在比例尺中显示 1e-19。

关于Gnuplot:未定义/缺失数据点和绘图样式 'with image',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14235928/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com