在制作带有曲线的曲线时,我正在努力解决问题。在填充区域之间,似乎存在“差距”。但是,这些工件不会出现在打印件上,而是取决于查看器和缩放选项。在Gnuplot我使用eps终端,eps文件看起来很棒,但是当我转换为pdf时会出现这些行。在绘图之后或将乳胶文档从dvi转换为pdf时直接进行转换。由于现在大多数文件都在显示器上,这是一个问题。当我直接在Gnuplot中使用pdfcairo终端时,问题也出现了,所以它不是由转换(仅尝试过epstopdf和ps2pdf)引起的。
我附上了“acroread”中显示的情节的SCREENSHOT(其他pdf观众也有同样的问题)。
有人知道如何摆脱它但保持图形矢量化吗?
答案 0 :(得分:2)
我刚遇到同样的问题。显然是两条曲线之间的填充 因此,它是作为一组不完全相互接触的多边形完成的 在一些PDF查看器上可以看到细白线。
解决此问题的一种方法是绘制这些多边形边界。第一 在gnuplot中定义最小和最大函数:
min(x, y) = x < y ? x : y
max(x, y) = x > y ? x : y
然后,假设“datafile”的第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
第一个绘图指令用灰色填充曲线之间的空格。 第二个绘图指令在每个指针处绘制零大小(ps 0)的点 曲线(2)上的x值(1),薄(lw 0.5),连续(lt 1),灰色 (lc rgb“灰色”),垂直错误栏(yerrorbars)从低到 曲线2和3中的较高者。
这涵盖了白线。为了获得最佳效果,您可能需要 试验条的厚度(例如,lw 0.6,lw 0.2)。
答案 1 :(得分: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的回答中的最小和最大曲线的构造可能会成功。
答案 2 :(得分:1)
此问题已通过gnuplot 5.2修复,请参阅https://sourceforge.net/p/gnuplot/patches/749/
实际问题是,填充曲线先前被绘制为多个四边形,由于抗锯齿,导致许多观察者出现伪影(白色条纹)。
由于5.2版填充曲线呈现为单个多边形,这可以防止出现这些问题(请参阅上面链接的问题)。
答案 3 :(得分:0)
如果您正在谈论红色和青色位,那么间隙可能是由RGB屏幕上的红色+青色=白色引起的错觉。也许没有间隙,但边界区域由于像素的接近而显示为白色。
截取屏幕截图并将其炸开,以便您可以看到感知间隙周围的各个像素。
如果是这种情况,可能会为相邻的colurs选择不同的配色方案,以消除这种影响。除了红色和青色位之外,我当然看不到任何符合你描述的内容。
答案 4 :(得分:-1)
从https://groups.google.com/forum/#!topic/comp.graphics.apps.gnuplot/ivRaKpu5cJ8开始,它似乎是一个纯粹的Gostscript问题。
使用Gnuplot的eps终端并使用
将eps文件转换为pdfepstopdf -nogs <file.eps> -o <file.pdf>
解决了我系统上的问题。在相应的Man页面中,“-nogs”选项指示epstopdf不使用Gostscript。