gnuplot pm3d得到白线

时间:2012-10-01 19:41:32

标签: gnuplot spectrogram

我用gnuplot版本4.6绘制光谱图。 我确保它是这里的最新版本: http://www.gnuplot.info/download.html

Gnuplot是从Debian存储库安装的。

绘图区域和右侧的刻度包含奇怪的白线。他们似乎将数据分开。在具有密集数据的绘图区域,它们看起来像方格图案:

http://imageshack.us/a/img822/6219/linese.png

线条在规模上不太明显,但它们也在那里。刻度上只有水平线。

我认为这是监视器色域的情况,但pdf monochrome也出现了行。

我的代码是:

#!/usr/bin/gnuplot

set term pdf
# set style fill noborder # checked with and without this line
set output "../results1/fft.pdf"
set pm3d map
splot "../results1/fft.dat"

正如你可以在那里阅读的那样,我尝试使用选项noborder但是存在和不存在行。

示例数据可以是:

0 1 3
0 2 3
0 3 4
0 4 2
0 5 2
0 6 3
0 7 4
0 8 3

1 1 3
1 2 2
1 3 4
1 4 2
1 5 2
1 6 3
1 7 4
1 8 4

2 1 2
2 2 4
2 3 4
2 4 3
2 5 2
2 6 4
2 7 2
2 8 2

3 1 2
3 2 3
3 3 3
3 4 4
3 5 2
3 6 2
3 7 2
3 8 2

你知道怎么摆脱这条线吗?

2 个答案:

答案 0 :(得分:1)

这也困扰了我一段时间。我所拥有的最佳解决方法受到this post的启发。基本上你可以使用

plot "datafile" with image

而不是splot命令。数据的绘制方式存在一些细微的差别,但这会产生一个.pdf,在彩色区域之间没有那些令人讨厌的间隙,而且文件要小得多。

注意这只适用于形成矩形网格的数据!如果数据文件是矩阵格式(除了数据点的数量之外没有x或y数据),例如

3 3 2 2
3 2 4 3
...

(每个块的第一行的z值构成第一行等)您可以使用命令

plot 'datafile' ($1*xincr - x0):($2*yincr - y0):3 matrix with image

parens中的东西是可选的,但允许您将得到的绘图缩放到正确的x和y值。 (xincr是一个gnuplot变量,你必须为数据中的x增量设置,x0是x偏移等)。

如果这导致绘图周围出现白色间隙,请使用绘图命令一次,重新缩放轴,然后重新绘图,例如

set terminal unknown
plot 'datafile' ($1*xincr - x0):($2*yincr - y0):3 matrix with image
set xr[GPVAL_DATA_X_MIN:GPVAL_DATA_X_MAX]
set yr[GPVAL_DATA_Y_MIN:GPVAL_DATA_Y_MAX]
set output "fft.pdf"
replot

第二个回答

我发现这种效果依赖于pdf-viewer。例如,它出现在linux下的evince但不是okular。根据您的应用程序,您可以使用不同的查看器。

答案 1 :(得分:0)

对我来说,替换

set pm3d map

unset surface; set pm3d at b; set view map

纠正了这个问题。在 gnuplot 4.6 补丁级别 2 和 gnuplot 5.4 补丁级别 1 上测试。

我无法解释原因,但手册显示

set pm3d map

的快捷方式
 set pm3d at b; set view map; set style data pm3d; set style func pm3d

简单的测试表明,如果包含任何一个“设置样式”指令,就会出现问题。它们的移除纠正了问题,但使表面可见 - 因此“未设置表面”。