2011-02-05 4 views
5

Robię niektóre wykresy w R. Powstałe pliki PDF nie wyświetlają się poprawnie na urządzeniach z systemem iOS, takich jak iPhone. Na przykład, oto rysunek stock ggplot2 stworzony jako PDF:Wystąpił problem z wyświetlaniem liczb w formacie PDF utworzonych za pomocą R na urządzeniach z systemem iOS.

library(ggplot2) 
mpg.eg <- within(mpg[1:74,], { 
    model <- reorder(model, cty) 
    manufacturer <- reorder(manufacturer, -cty) 
}) 

pdf(file="figures/ios-example.pdf") 
p <- qplot(cty, model, data=mpg.eg) 
p + facet_grid(manufacturer ~ ., scales="free", space="free") + 
    opts(strip.text.y = theme_text()) 
dev.off() 

Patrząc na iPhone, kropki w dotplot nie są wyświetlane. Zobacz np. the resulting pdf, jeśli używasz urządzenia z iOS.

Rozumiem, czytając dokumenty, że jest to najprawdopodobniej problem z ograniczoną dostępnością czcionek i kaprysami renderowania PDF w systemie iOS, a nie kwestią tworzenia plików PDF w wersji R. Myślałem, że może osadzać czcionki w pliku PDF z

embedFonts("figures/ios-example.pdf") 

sortuje rzeczy, ale tak nie jest. Czy jest coś, co mogę zrobić, aby obejść ten problem na iOS, poza udostępnieniem postaci w innym formacie?

+0

Hi Kieran. Jeśli udokumentowany może być wyświetlany na "prawdziwym" komputerze, problem prawdopodobnie dotyczy przeglądarki iOS. Czy przejście na formaty inne niż pdf byłoby alternatywą? –

+0

Cześć Dirk, tak, można je oglądać na zwykłym komputerze --- jak widać na podstawie pytania Byłem zasadniczo pewien, że dokumenty były poprawne i był to problem iOS/iPhone. – Kieran

Odpowiedz

4

embedFonts domyślnie nie osadza standardowego zestawu czcionek PDF, a zatem nie wprowadza żadnych istotnych zmian w przykładowym pliku PDF. Spróbuj zamiast

embedFonts("figures/ios-example.pdf", 
      options="-dSubsetFonts=true -dEmbedAllFonts=true") 

a jeśli że nie działa, taktykę „-dPDFSETTINGS=/printer” na nie zbyt.

Twój przykład jest jednak poprawnie wyświetlany na jedynym urządzeniu z systemem iOS, które mam pod ręką (iPad, wersja OS 4.2.1).

+2

Dzięki za szybką odpowiedź. Twoje rozwiązanie działa z opcją '-dPDFSETTINGS =/printer' dodaną do dwóch pozostałych. Mam dostęp do wersji 4.2.1 na telefonie iPhone 3GS, a nie iPada, i zdecydowanie tam zawodziłem. – Kieran

+0

Musiałem również ustawić '-dUseCIEColor'. OMG, to dość denerwujące, aby wymagać tego "przetwarzania końcowego" za pomocą ghostscript (nawet jeśli R wykonuje to za ciebie), myślę, że po prostu nie będę już używał ggplot2. –

4

Można również próbować mówienie R nie używać czcionki Dingbats narysować punkty: pdf(..., useDingbats = F)

+0

Dzięki, Hadley! – Kieran

+0

Byłbym przekonany, że jest to "poprawna" odpowiedź na platformę docelową dla systemu iOS. Osadzanie czcionek może naprawdę zwiększyć rozmiary plików. –

+2

To prawda, ale z drugiej strony 'embedFonts' uruchamia PDF przez Ghostscript, co oznacza, że ​​aktualny strumień treści jest teraz skompresowany i operatory redundantnych rysunków (IIRC) są usuwane, w przeciwieństwie do tego, co robi sam R. To może znacznie więcej niż nadrobić rozmiar czcionek. – zwol