Saltar al contenido

¿Cómo reducir la salida en formato EPS de gnuplot?

Verificamos profundamente cada uno de los escritos de nuestra página web con la meta de mostrarte en todo momento información veraz y certera.

Solución:

Mi solución para este problema es el comando “cada” en gnuplot, es decir

plot "datafile" u 1:2 every 10

De esta manera, ya puede reducir el tamaño de los gráficos eps en ~ un factor de 10. Por supuesto, debe averiguar cuántos datos puede omitir sin perder demasiada información, es decir, la figura aún debe contener todas las características que desea. visualizar.

Si no se desea esto, normalmente convierto el eps en una imagen rasterizada del tamaño apropiado y la vuelvo a convertir a eps. También aquí tienes que jugar con la resolución, etc.

El problema con los archivos .eps no es necesariamente la resolución (son gráficos vectoriales), sino la cantidad de información que incluye gnuplot al crear el archivo. Gnuplot tiene una tendencia a dibujar archivos .eps con mucha información adicional, especialmente para gráficos 2D y gráficos con muchos puntos. Por ejemplo, para una cuadrícula de cuadrados rojos unidos en los bordes para formar un gran cuadrado rojo, gnuplot dibujaría toneladas de pequeños cuadrados rojos en lugar del gran cuadrado. Este problema se menciona al final de esta publicación de blog, donde dicen que plot ... with image crea una salida mucho más pequeña que splot para hacer mapas de calor.

Parece que no estás usando splotsin embargo, podría intentar hacer un .pdf en lugar de .eps, y si necesita .eps, conviértalo usando pdf2ps u otro programa. Eso podría ayudar…

Por curiosidad, ¿cuántos puntos estás trazando? Si pudiera dar una idea de la cantidad de datos que usa, junto con un código de ejemplo que está usando en este momento, podríamos darle mejores ideas.

Encontré un problema similar en el que un gráfico de dispersión de más de 10^6 puntos generaba archivos PDF de >100 MB. Los puntos se dibujaron con una opacidad muy baja (1 %), por lo que solo se verían muchos puntos en capas, lo que daría como resultado una distribución de densidad más suave que un diagrama de dispersión. Por lo tanto, era muy reacio a seguir el consejo de Raphael Roth y reducir los datos.

En cambio, encontré útil crear un script Gnuplot separado para trazar los datos usando el pngcairo terminal a imágenes de mapa de bits PNG de suficiente resolución. Este gráfico no tiene ejes, ni tics, ni bordes ni márgenes, solo los datos dibujados en las coordenadas apropiadas:

set terminal pngcairo transparent size 400,400
set output 'foo.png'
set margins 0,0,0,0
set border 0
unset xtics
unset ytics
# set xrange, yrange appropriately
plot ... with points notitle

Luego, en la trama real (para la cual usé el cairolatex terminal), trazo esta imagen PNG:

set terminal cairolatex pdf
# regular setup, using the same xrange and yrange
plot 'foo.png' binary filetype=png with rgbalpha axes x2y2

Tenga en cuenta que trazo usando el otro conjunto de ejes (sin tic) para garantizar que la imagen llene el área del gráfico sin ningún borde, de modo que los tics en los ejes x1y1 coincidan con la posición real de los puntos del gráfico de dispersión.

El PNG terminó siendo solo unas pocas docenas de kilobytes, el PDF fue un par de MB. creo que el rgbalpha estilo de trama (similar a with image) no es el más eficiente, pero esto fue lo suficientemente bueno para mí.

Espero que alguien encuentre esto útil.

Recuerda algo, que te permitimos glosar si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *