2012-05-03 13 views
5

W R, podczas zapisywania wykresu w pliku PDF lub Postscript, łączniki w etykietach osi stają się znakami minus. To, jak widać, jest zgodne z projektem. Zgodnie z dokumentacją urządzenia "postscript":Jakikolwiek sposób wyłączyć "minus hack" w wydrukach PDF/Poscript?

Istnieje wyjątek [do normalnych zasad kodowania]. Znak 45 ("" - "") jest zawsze ustawiony jako minus (jego wartość w Adobe ISOLatin1), mimo że jest łącznikiem w innych kodowaniach . Dzielnica jest dostępna jako znak 173 (ósemkowy 0255) we wszystkich kodach łacińskich, cyrylicą i grece. (Może to być wpisane jako „ "\"” UAD w UTF-8.)

Czy istnieje jakiś sposób, aby wyłączyć tę funkcję?

Problem polega na tym, że często zapisuję działki w różnych formatach i, jeśli postępuję zgodnie z sugerowanym obejściem "\ uad", otrzymuję oczekiwane łączniki w wynikach Postscript/PDF, ale nic, gdy renderuję moje wątki na inne urządzenia graficzne takie jak PNG. Wolałbym nie tworzyć dwóch wersji każdego wykresu, jednego dla formatu PDF i jednego dla PNG.

Gdybym mógł wyłączyć "minus hack", zachowanie renderowania na urządzeniach graficznych byłoby spójne i mógłbym po prostu "wydrukować" wykres na wiele urządzeń, aby uzyskać go w różnych formatach. Na przykład, chciałbym, aby móc wykonać następujące czynności, a mają myślniki renderowanie konsekwentnie w obu wersjach PDF i PNG działki:

p <- qplot(arrival_rate, mean_service_time, data = response_times, ...) 
ggsave(p, file = "/tmp/service-scaling.pdf", useDingbats = F) 
ggsave(p, file = "/tmp/service-scaling.png") 

dzięki za pomoc!

Odpowiedz

7

Jeśli twoje urządzenie je obsługuje (możesz wpisać capabilities(), aby dowiedzieć się, czy to robi), możesz zamiast tego użyć cairo_pdf(). Wydaje obsłużyć "-" bardziej jak w innych urządzeniach wydrukiem:

enter image description here enter image description here

tutaj, bo równie dobrze może to go, to kod stosowany dla dwóch pdfs powyżej:

cairo_pdf("cairo_pdf.pdf", width=6, height=3.5) 
    par(mar=c(10,4,4,1)) 
    plot(1:10, type = "n", axes = FALSE, 
     main = "Plotted using cairo_pdf()", 
     ylab = "", xlab = "x-y", cex.lab = 10) 
dev.off() 

pdf("pdf.pdf", width=6, height=3.5) 
    par(mar=c(10,4,4,1)) 
    plot(1:10, type = "n", axes = FALSE, 
     main = "Plotted using pdf()", 
     ylab = "", xlab = "x-y", cex.lab = 10) 
dev.off() 
+1

To działa dla mnie! Następujące produkuje dokładnie to, co chcę: 'ggsave (file =" /tmp/service-scaling.pdf ", p, cairo_pdf)' –

0

Istnieje obejście dla pdf() opisane here: zastąpić łącznik "-" znakiem Unicode "\255" lub w UTF8 "\uad". To może nie ładnie się drukować w konsoli R, ale będzie w pliku PDF. To można łatwo zastąpić używając gsub("-", "\uad", "x-y):

enter image description here

pdf("pdf.pdf", width=5, height=4) 
par(mar=c(6,2,2,2), mfrow=c(2,1)) 
plot(1:10, type = "n", axes = FALSE, 
    main = "Default", 
    ylab = "", xlab = "x-y", cex.lab = 8) 
plot(1:10, type = "n", axes = FALSE, 
    main = "with '\\uad'", 
    ylab = "", xlab = gsub("-", "\uad", "x-y"), cex.lab = 8) 
dev.off() 

skończyło korzystania z tego rozwiązania, ponieważ chcę, aby wyeksportować plik PDF w CMYK colormode, co nie jest możliwe w cairo_pdf (i alternatywę późniejszej konwersji do CMYK powoduje zwiększenie rozmiaru pliku o 10-krotnie w przypadku małych plików). Mam nadzieję, że ktoś inny z tego skorzysta.

Powiązane problemy