【问题标题】:gnuplot pm3d gets white linesgnuplot pm3d 得到白线
【发布时间】:2021-07-29 06:58:22
【问题描述】:

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

Gnuplot 是从 Debian 存储库安装的。

右侧的情节区域和比例包括奇怪的白线。他们似乎将数据分开。在数据密集的绘图区域,它们看起来像方格图案:

线在秤上不太明显,但它们也在那里。秤上只有水平线。

我以为是监视器色域或其他情况,但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

你知道如何摆脱这些线条吗?

【问题讨论】:

    标签: gnuplot spectrogram


    【解决方案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
    

    括号中的内容是可选的,但允许您将结果图缩放到正确的 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。根据您的应用程序,您可以使用不同的查看器。

    【讨论】:

    • 感谢您的回答和有关秤的其他提示。我安装了okular进行检查,白线仍然存在。我现在将尝试第一个解决方案,首先尝试秤上仍有线条,但我不确定我是否真的必须使用秤。
    • 是的,我很难摆脱颜色栏中的线条。我认为这是使用 okular 帮助的一个例子。 Adobe 阅读器可能还显示了平滑的颜色条。当然总有png终端没有这个问题...
    【解决方案2】:

    对我来说,替换

    set pm3d map
    

    unset surface; set pm3d at b; set view map
    

    纠正了这个问题。在 gnuplot 4.6 patchlevel 2 和 gnuplot 5.4 patchlevel 1 上测试。

    我无法解释原因,但手册揭示了这一点

    set pm3d map
    

    是一个快捷方式

     set pm3d at b; set view map; set style data pm3d; set style func pm3d
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多