4

在用填充曲线绘制图时,我遇到了一个问题。在填充区域之间,似乎存在“间隙”。但是,这些伪影不会出现在打印件上,而是取决于查看器和缩放选项。在 Gnuplot 中,我使用 eps 终端,eps 文件看起来很棒,但是当我转换为 pdf 时会出现线条。它要么在绘图后直接完成,要么在将乳胶文档从 dvi 转换为 pdf 时完成。由于现在大多数文件都在这里展示,这是一个问题。当我在 Gnuplot 中直接使用 pdfcairo 终端时也会出现该问题,因此它不是由单独的转换(尝试 epstopdf 和 ps2pdf)引起的。

我附上了“acroread”中显示的绘图的屏幕截图(其他pdf查看器中的问题相同)。

有没有人知道如何摆脱它但保持图形矢量化?

垂直线

4

5 回答 5

2

我刚刚遇到了同样的问题。显然,两条曲线之间的填充是作为一组不完全相互接触的多边形完成的,因此在某些 PDF 查看器上可以看到细白线。

解决此问题的一种方法是绘制这些多边形边界。首先在 gnuplot 中定义 min 和 max 函数:

min(x, y) = x < y ? x : y
max(x, y) = x > y ? x : y

然后,假设“数据文件”的第 1 列包含您的 x 值,并且第 2 列和第 3 列包含曲线 2 和 3 的 y 值,请编写:

plot "datafile" using 1:2:3 with filledcurves lc rgb "gray", \
"" using 1:2:(min($2, $3)):(max($2, $3)) with yerrorbars ps 0 lt 1 \
lc rgb "gray" lw 0.5

第一个绘图指令以灰色填充曲线之间的空间。第二条绘图指令在曲线 (2) 上的每个 x 值 (1) 处绘制大小为零 (ps 0) 的点,其中细线 (lw 0.5)、连续 (lt 1)、灰色 (lc rgb "gray")、垂直误差线 ( yerrorbars) 从曲线 2 和 3 的较低到较高。

这涵盖了白线。为了获得最佳结果,您可能需要对钢筋的厚度进行试验(例如,lw 0.6、lw 0.2)。

于 2015-06-28T22:03:23.143 回答
1

这个问题仍然存在于 Gnuplot 5.0.4 和至少我用来输出 PDF 的 cairolatex 终端中。我还想为两条曲线之间的区域着色,在我的例子中定义为函数。

当我使用类似的东西时

f(x) = 2 + sin(x)
g(x) = cos(x)
plot '+' using 1:(f($1)):(g($1)) with filledcurves closed

我得到了与问题相同的垂直白线。

对于一条总是在另一条之上的曲线,一个简单的解决方案是让 Gnuplot 用所需的颜色填充从上部曲线到 x 轴的区域,然后从下部曲线向下涂上白色:

f(x) = 2 + sin(x)
g(x) = cos(x)
plot f(x) with filledcurves x1, g(x) w filledc x1 fs lc rgb "white"

显然,这种填充曲线样式(不是在曲线之间,而是在曲线和轴之间)避免了梯形伪影。这可以很容易地扩展为绘制数据文件和多个堆叠治疗,就像问题中一样。只需从上到下绘制,并在最低曲线和 x 轴之间的空白区域用白色完成。

对于重叠曲线,像 françois-tonneau 的答案中的最小和最大曲线的构造可能会奏效。

于 2017-01-13T16:59:42.703 回答
1

此问题已通过 gnuplot 5.2 修复,请参阅https://sourceforge.net/p/gnuplot/patches/749/

实际的问题是,填充曲线以前被绘制为许多四边形,这会导致由于抗锯齿在许多查看器中出现伪影(白色条纹)。

由于 5.2 版填充曲线被渲染为单个多边形,从而防止了这些问题(参见上面链接的问题)。

于 2017-10-03T09:45:42.043 回答
0

如果您谈论的是红色和青色位,则间隙可能是由 RGB 屏幕上的红色 + 青色 = 白色引起的错觉。也许没有间隙,但由于像素的接近,边界区域显示为白色。

截取屏幕截图并将其放大,以便您可以看到感知间隙周围的各个像素。

如果是这种情况,也许为相邻颜色选择不同的配色方案会消除这种效果。除了红色和青色位之外,我当然看不到任何与您的描述相符的东西。

于 2012-05-03T12:13:10.930 回答
-1

https://groups.google.com/forum/#!topic/comp.graphics.apps.gnuplot/ivRaKpu5cJ8,这似乎是一个纯粹的 Gostscript 问题。

使用 Gnuplot 的 eps 终端并将 eps 文件转换为 pdf

epstopdf -nogs <file.eps> -o <file.pdf>

解决了我系统上的问题。在相应的手册页中,“-nogs”选项指示 epstopdf 不要使用 Gostscript。

于 2014-06-10T09:06:37.093 回答