2011-12-15 10 views
7

estoy tramando algunos datos en R utilizando los siguientes comandos:Reducir el tamaño del archivo PDF de la trama en I

jj = ts(read.table("overlap.txt")) 
pdf(file = "plot.pdf") 
plot(jj, ylab="", main="") 
dev.off() 

El resultado es idéntico:

enter image description here

El problema que tengo es que el archivo pdf que obtengo es bastante grande (25Mb). ¿Es la forma de reducir el tamaño del archivo? JPEG no es una opción porque necesito un gráfico vectorial.

+0

Bueno, sí trazó un número desconocido (¿grande?) De segmentos de línea. En general, el pdf es la peor manera posible de codificar algo. ¿Has intentado generar eps o svg con 'cairo()'? –

+0

No parece particularmente ruidoso. el primer argumento parece un poco detallado. ¿Qué dice el resumen (jj)? ¿Va a subir a 4e + 05? – Spacedman

+0

Para variables con muchos valores repetidos, uno podría ser capaz de armar una solución con 'rle' que arrojaría valores repetidos y guardaría las coordenadas de tiempo de los puntos de cambio ... pero eso sería bastante más complejo, y no guarde cualquier cosa para variables que varían continuamente –

Respuesta

6

Estás dibujando MUCHAS líneas o puntos. Los formatos de imagen vectorial como pdf, ps, eps, svg, etc. mantienen información lógica sobre todos esos puntos, líneas u otros elementos que aumentan la complejidad, lo que se traduce en tamaño y tiempo de dibujo, a medida que aumenta el número de puntos. Generalmente, las imágenes vectoriales son las mejores de varias maneras, la más compacta, la mejor escala y la reproducción de la más alta calidad. Pero, si la cantidad de elementos gráficos se vuelve muy grande, a menudo es mejor ir a un formato de imagen raster como png. Cuando cambia a la ráster, es mejor tener una buena idea de qué tamaño de imagen desea, tanto en píxeles como en medidas de impresión, para obtener la mejor imagen.

Para obtener información de la otra dirección, una imagen ráster demasiado grande, consulte este answer.

1

Difícil de ver sin ver cómo se ve la trama: ¿publicar una captura de pantalla?

Sospecho que se trata de una gran cantidad de líneas muy detalladas y la mayoría de la información probablemente no sea visible, muchas cosas solapadas o detalles muy pequeños. Intente reducir sus datos en una dimensión u otra. Dudo que perderás información visible.

+0

Agregué el diagrama. – alex

+1

También hay herramientas de postprocesamiento para que los pdfs reduzcan la sobreimpresión. –

4

Una forma de reducir el tamaño del archivo es reducir el número de valores que tiene. Asumiendo que tiene una trama de datos llamado df:

# take sample of data from dataframe 
sampleNo = 10000 
sampleData <- df[sample(nrow(df), sampleNo), ] 

creo que la única otra alternativa dentro R es producir un vector no. Fuera de R, puede utilizar Acrobat Professional (que no es gratuito) para optimizar el pdf. Esto puede reducir el tamaño del archivo enormemente.

+0

Sería genial obtener un número de muestra equidistante. Solo tomas una cabeza/cola. –

4

¿Qué versión de R estás usando? En R 2.14.0, pdf() tiene un argumento compress para admitir la compresión. No estoy seguro de cuánto puede ayudarlo, pero también hay otras herramientas para comprimir archivos PDF como Pdftk y qpdf. Tengo dos envoltorios para ellos en el paquete animation, pero es posible que desee usar la línea de comando directamente.

+0

La compresa no ayuda mucho. Tiene algún algoritmo simple allí. No puedes cambiarlo Tener una muestra equidistante del conjunto probablemente sea más útil. –

9

Eche un vistazo a tools::compactPDF - necesita tener instalado qpdf o ghostscript, pero puede hacer una gran diferencia en el tamaño del archivo pdf.

+0

¿Podría dar un ejemplo al respecto? No puedo hacer 'tools :: compactPDF (filename, qpdf = Sys.getenv (" R_QPDF "," qpdf "), gs_cmd = Sys.getenv (" R_GSCMD "," "), gs_quality =" pantalla ", gs_extras = personaje (), ratio = 0.2) 'porque falla. - - Todas las herramientas necesarias instaladas en Debian 8.5. ¿Necesita importar algo extra? - - Siento esta respuesta ahora stub. –

Cuestiones relacionadas