2015-02-12 11 views
9

Mam wiele plików big-ish, które czytam do R w dokumencie rmarkdown, czyszczenia i kreślenia z ggplot2.Czy mogę zmniejszyć rozmiar pliku pdf w knitR/ggplot2 podczas korzystania z dużego zestawu danych bez korzystania z zewnętrznych narzędzi?

Większość plików ma rozmiar około 3 MB i zawiera około 80 000 linii danych, ale niektóre mają rozmiar 12 MB i 318,406 linii danych (czas, rozszerzenie, siła).

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" 

To trwa chwilę ubijać przez dane i utworzyć plik PDF (to jest OK), ale plik PDF jest obecnie prawie 6 MB w rozmiarze około 16 wykresów tam (w rzeczywistości 3 wykresów, które są faseta wykresy za pomocą ggplot2).

Rozumiem, że plik pdf zawiera segment linii dla każdego punktu danych w moim zestawie danych, a zatem wraz ze wzrostem liczby wykresów ilość danych w pliku rośnie.Jednakże nie oczekuję wymogu przejdź do dokumentu PDF, aby zobaczyć ten poziom szczegółowości, i będę mieć problemy z przesyłaniem e-mailem, gdy zbliża się do 10 MB).

Jeśli skonwertuję pdf na ps za pomocą pdf2ps, a następnie wracam do formatu pdf z plikiem ps2pdf, otrzymuję plik o wielkości 1/3 rozmiaru oryginalnego pliku pdf, a jakość wygląda świetnie.

Z tego powodu istnieje metoda z R/knitR/ggplot2 w celu zmniejszenia liczby punktów wykreślonych w obrazach pdf bez za pomocą zewnętrznego narzędzia do skompresowania pliku pdf? (Czy jakoś optymalizacji pdf generowane?)

Cheers Pete

Odpowiedz

11

Można spróbować zmienić urządzenie graficznego z pdf do png dodając

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

do fragmentu instalacji.

Albo można dodać do nagłówka wyjściowego

output: 
    pdf_document: 
    dev: png 

Spróbuj różnych urządzeń (PNG, JPG). Może to zmieni rozmiar

+0

Yup - png zrobił to. 6Mb do 600k. – PJP

+1

Należy pamiętać, że svg nie działało w tym kontekście. – PJP

+0

... w prawo, formaty rastrowe będą niewielkie, a formaty wektorowe będą duże. Nieskompresowany obraz rastrowy koduje każdy piksel, podczas gdy format wektorowy koduje każdy punkt/linię/inny kształt. – Gregor

Powiązane problemy