artefactos inquietantes en pdf

Estoy luchando con un problema al hacer parcelas con curvas rellenas. Entre las áreas rellenas, parece haber una "brecha". Sin embargo, estos artefactos no aparecen en la impresión, sino que dependen del visor y de las opciones de zoom. En Gnuplot uso el terminal eps, los archivos eps se ven muy bien, pero las líneas aparecen cuando estoy convirtiendo a pdf. La conversión se realiza directamente después del trazado o al convertir el documento de látex de dvi a pdf. Como la mayoría de los documentos están aquí en exhibición hoy en día, esto es un problema. El problema también aparece cuando estoy usando directamente el terminal pdfcairo en Gnuplot, por lo que no es causado solo por la conversión (probé con epstopdf y ps2pdf).

Adjunté una CAPTURA DE PANTALLA de una trama que se muestra en "acroread" (mismo problema en otros visores de PDF).

¿Alguien tiene una idea de cómo deshacerse de él pero manteniendo el gráfico vectorizado?

líneas verticales

preguntado el 03 de mayo de 12 a las 13:05

5 Respuestas

Acabo de encontrarme con el mismo problema. Aparentemente, el relleno entre dos curvas se realiza como un conjunto de polígonos que no se tocan exactamente, de ahí las delgadas líneas blancas visibles en algunos lectores de PDF.

Una forma de solucionar el problema es dibujar sobre los límites de estos polígonos. Primero defina las funciones min y max en gnuplot:

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

Luego, asumiendo que la columna 1 del "archivo de datos" contiene sus valores x y que las columnas 2 y 3 contienen los valores y de las curvas 2 y 3, escriba:

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

La primera instrucción de trazado llena los espacios entre las curvas en gris. La segunda instrucción de trazado dibuja puntos de tamaño cero (ps 0) en cada valor de x (1) en la curva (2) con barras de error verticales delgadas (lw 0.5), continuas (lt 1), grises (lc rgb "gray") ( ybarras de error) de menor a mayor de las curvas 2 y 3.

Esto cubre las líneas blancas. Para obtener los mejores resultados, es posible que deba experimentar con el grosor de las barras (p. ej., lw 0.6, lw 0.2).

Respondido el 28 de junio de 15 a las 23:06

Este problema se solucionó con gnuplot 5.2, consulte https://sourceforge.net/p/gnuplot/patches/749/

El problema real era que las curvas rellenas se trazaban previamente como muchos cuadriláteros, lo que genera artefactos (franjas blancas) en muchos espectadores debido al antialiasing.

Desde la versión 5.2, las curvas rellenas se representan como un solo polígono, lo que evita estos problemas (consulte el problema vinculado anteriormente).

Respondido 03 Oct 17, 14:10

El problema sigue presente en Gnuplot 5.0.4 y al menos en el terminal cairolatex que utilizo para generar archivos PDF. También quería colorear el área entre dos curvas, en mi caso definidas como funciones.

Cuando usé algo como

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

Obtuve las mismas líneas blancas verticales que en la pregunta.

Una solución simple para las curvas en las que una está siempre encima de la otra es dejar que Gnuplot llene el área desde la curva superior hasta el eje x con el color deseado y luego pintarlo con blanco desde la curva inferior hacia abajo:

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

Aparentemente este estilo de curvas rellenas (no entre curvas sino entre una curva y un eje) evita los artefactos trapezoidales. Esto se puede ampliar fácilmente para trazar archivos de datos y múltiples curas apiladas como en la pregunta. Simplemente pinte de arriba a abajo y termine con blanco para el área vacía entre la curva más baja y el eje x.

Para curvas superpuestas, una construcción de curvas mínimas y máximas como en la respuesta de françois-tonneau podría funcionar.

Respondido el 23 de junio de 18 a las 17:06

Si está hablando de los bits rojo y cian, la brecha podría ser una ilusión causada por el rojo + cian = blanco en una pantalla RGB. Tal vez no haya espacio, pero las áreas de los bordes aparecen en blanco debido a la proximidad de los píxeles.

Tome la captura de pantalla y amplíela para que pueda ver los píxeles individuales alrededor del espacio percibido.

Si este es el caso, tal vez seleccionar un esquema de color diferente para los colores adyacentes eliminaría el efecto. Desde luego, no puedo ver nada que coincida con su descripción en ninguna parte excepto en los bits rojo y cian.

contestado el 03 de mayo de 12 a las 13:05

Lo que quiero decir son las líneas verticales, mejor visibles en el área gris. No importa qué color tengan, solo quiero un área gris como en los gráficos eps: Raphael roth

No tengo una instancia funcional de gnuplot a mano, por lo que realmente no puedo hacer más para solucionar el problema. La respuesta fue solo una suposición. Intente trazar en postscript y observe cómo representa realmente los gráficos. - PreocupadoDeTunbridgeWells

También puede echarle un vistazo a través de otros lectores de PDF. Hay bastantes OSS basados ​​en el motor ghostscript. Vea si el problema ocurre en los motores de renderizado. - PreocupadoDeTunbridgeWells

Después de buscar un poco, me encontré con la siguiente publicación: grupos.google.com/group/comp.graphics.apps.gnuplot/… Aparentemente es un problema bien conocido relacionado con el suavizado. Parece que no hay solución en este momento. Uno podría convertir eps a png con "convertir +antialias", pero esto explota el tamaño del archivo cuando se vuelve a convertir a eps... - Raphael roth

@RaphaelRoth: los gráficos son en gran parte bloques planos de color. Deberían comprimirse bastante bien con la codificación de longitud de ejecución, pero no serán tan compactos como las representaciones vectoriales. - PreocupadoDeTunbridgeWells

Desde https://groups.google.com/forum/#!topic/comp.graphics.apps.gnuplot/ivRaKpu5cJ8, parecía ser un problema puro de Gostscript.

Usando la terminal eps de Gnuplot y convirtiendo el archivo eps a pdf con

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

resolvió el problema en mi sistema. Desde la página Man correspondiente, la opción "-nogs" le indica a epstopdf que no use Gostscript.

Respondido el 10 de junio de 14 a las 10:06

Lo probé y el archivo de salida no es un PDF entonces, no puedo abrirlo con un visor de PDF - Raphael roth

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.