Вопрос по pdf – тревожные артефакты в pdf

4

Я борюсь с проблемой при создании графиков с заполненными кривыми. Между заполненными областями, по-видимому, существует "разрыв". Однако эти артефакты не появляются на отпечатке, а зависят от зрителя и параметров масштабирования. В Gnuplot я использую терминал eps, eps-файлы выглядят великолепно, но линии появляются, когда я преобразую в pdf. Преобразование выполняется либо сразу после печати, либо при преобразовании латексного документа из dvi в pdf. Поскольку большинство документов в настоящее время находятся на дисплее, это проблема. Проблема также возникает, когда я непосредственно использую терминал pdfcairo в Gnuplot, поэтому она не вызвана только преобразованием (пробовал epstopdf и ps2pdf).

Я прикрепил СКРИНШОТ сюжета, отображаемого в «acroread» (та же проблема в других PDF-зрителях).

Кто-нибудь знает, как избавиться от этого, но сохранить графику векторизации?

vertical lines

Ваш Ответ

5   ответов
0

этот пробел может быть иллюзией, вызванной красным + голубым = белым на экране RGB. Может быть, промежутка нет, но области границ кажутся белыми из-за близости пикселей.

Возьмите скриншот и взорвите его, чтобы вы могли видеть отдельные пиксели вокруг видимого разрыва.

Если это так, возможно, выбор другой цветовой схемы для соседних цветов избавит от эффекта. Я, конечно, нигде не вижу ничего, соответствующего вашему описанию, кроме красных и голубых битов.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Raphael Roth
Error: User Rate Limit Exceededgroups.google.com/group/comp.graphics.apps.gnuplot/…Error: User Rate Limit Exceeded Raphael Roth
-1

https://groups.google.com/forum/#!topic/comp.graphics.apps.gnuplot/ivRaKpu5cJ8Казалось, это был чистый вопрос Gostscript.

Используя eps-терминал Gnuplot и конвертируя eps-файл в pdf с

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

решил проблему в моей системе. На соответствующей странице справочника «-nogs» опция указывает epstopdf не использовать Gostscript.

Error: User Rate Limit Exceeded Raphael Roth
2

кривыми делается как набор многоугольников, которые точно не соприкасаются друг с другом, таким образом тонкие белые линии, видимые в некоторых средствах просмотра PDF.

Один из способов решить эту проблему - нарисовать границы этих многоугольников. Первый Определите минимальные и максимальные функции в gnuplot:

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

Затем, предполагая, что столбец 1 «файла данных» содержит ваши значения х и чтобы столбцы 2 и 3 содержали значения y кривых 2 и 3, напишите:

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) на каждом Значение x (1) на кривой (2) с тонким (lw 0,5), непрерывным (lt 1), серым (lc rgb "grey"), вертикальные полосы ошибок (yerrorbars) от нижнего до выше из кривых 2 и 3.

Это покрывает белые линии. Для достижения наилучших результатов вам может понадобиться поэкспериментируйте с толщиной стержней (например, lw 0,6, lw 0,2).

1

https://sourceforge.net/p/gnuplot/patches/749/

Фактическая проблема заключалась в том, что заполненные кривые были ранее нанесены в виде четырехугольников, что приводит к появлению артефактов (белых полос) у многих зрителей из-за сглаживания.

Начиная с версии 5.2 заполненные кривые отображаются в виде одного многоугольника, что предотвращает эти проблемы (см. Проблему, связанную выше).

1

по крайней мере, в терминале cairolatex, который я использую для вывода PDF-файлов. Я также хотел покрасить область между двумя кривыми, в моем случае определяемыми как функции.

Когда я использовал что-то вроде

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.

Для перекрывающихся кривых построение минимальных и максимальных кривых, как в ответе Фрэнсиса-Тоно, могло бы сработать.

Похожие вопросы