2015-02-12 13 views
9

Tôi có một số tệp lớn-ish mà tôi đang đọc vào R trong tài liệu rmarkdown, dọn dẹp và vẽ bằng ggplot2.Tôi có thể giảm kích thước tệp pdf trong knitR/ggplot2 khi sử dụng tập dữ liệu lớn mà không sử dụng các công cụ bên ngoài không?

Hầu hết các tệp có kích thước khoảng 3Mb với khoảng 80.000 dòng dữ liệu, nhưng một số có kích thước 12Mb, với 318,406 dòng dữ liệu (Thời gian, Tiện ích mở rộng, Lực lượng).

Time,Extension,Load 
    (sec),(mm),(N) 
    "0.00000","0.00000","-4.95665" 
    "0.00200","0.00000","-4.95677" 
    "0.00400","0.00000","-4.95691" 
    "0.10400","-0.00040","-4.95423" 

Phải mất một thời gian để khuấy qua các dữ liệu và tạo ra các tập tin pdf (đó là OK), nhưng các tập tin PDF tại là gần 6Mb kích thước với khoảng 16 đồ thị trong đó (trong thực tế 3 đồ thị đó là khía cạnh các ô sử dụng ggplot2).

Tôi hiểu rằng pdf bao gồm một đoạn đường cho mỗi điểm dữ liệu trong tập dữ liệu của tôi, và do đó khi tôi tăng số lượng đồ thị lượng dữ liệu trong tệp tăng./Tuy nhiên, tôi không thấy yêu cầu đi sâu vào tài liệu pdf để xem mức độ chi tiết đó và tôi sẽ gặp sự cố khi gửi email xung quanh khi nó tiếp cận 10Mb).

Nếu tôi chuyển đổi pdf sang ps bằng cách sử dụng pdf2ps và sau đó quay lại pdf với ps2pdf, tôi nhận được một tệp khoảng 1/3 kích thước của bản gốc pdf và chất lượng sẽ rất tuyệt.

Do đó có phương pháp từ bên trong R/knitR/ggplot2 để giảm số điểm được vẽ trong hình ảnh pdf mà không cần bằng công cụ bên ngoài để nén tệp pdf? (Hoặc bằng cách nào đó tối ưu hóa pdf được tạo ra?)

Cheers Pete

Trả lời

11

Bạn có thể thử thay đổi các thiết bị đồ họa từ pdf-png bằng cách thêm

knitr::opts_chunk$set(dev = 'png') 

để thiết lập đoạn của bạn.

Hoặc bạn có thể thêm video này vào tiêu đề đầu ra của bạn

output: 
    pdf_document: 
    dev: png 

Hãy thử các thiết bị khác nhau (png, jpg). Có thể điều này sẽ thay đổi kích thước

+0

Yup - png đã làm điều đó. 6Mb xuống 600k. – PJP

+1

Lưu ý rằng svg không hoạt động trong ngữ cảnh đó. – PJP

+0

... đúng, định dạng raster sẽ nhỏ trong khi định dạng vectơ sẽ lớn. Không nén, hình ảnh raster mã hóa từng pixel trong khi định dạng vectơ mã hóa từng điểm/đường/hình dạng khác. – Gregor

Các vấn đề liên quan