2012-05-03 1 views
5

R에서 플롯을 PDF 또는 포스트 스크립트 파일에 저장하면 축 레이블의 하이픈이 빼기 기호로 변환됩니다. 이것은 의도적으로 설계된 것입니다. "포스트 스크립트"장치에 대한 설명서에 따르면 :PDF/Poscript 출력에서 ​​"해킹 빼기"를 비활성화하는 방법은 무엇입니까?

[정상적인 인코딩 규칙에] 예외가 있습니다. 다른 인코딩에서 하이픈 인 경우에도 문자 45 (' "-"')는 항상 마이너스 (Adobe ISOLatin1의 해당 값)으로 설정됩니다. 하이픈은 라틴어 인코딩 인 키릴 문자와 그리스어 모두에서 문자 173 (8 진수 0255)로 사용할 수 있습니다. (이것은 UTF-8 로켈에서 '\ "UAD"' 으로 입력 할 수 있습니다.)

이 기능을 해제 할 수있는 방법이 있습니까?

내가 겪고있는 문제는 필자가 제안한 "\ uad"해결 방법을 따르면 다양한 형식의 플롯을 자주 저장한다는 것입니다. Postscript/PDF 출력에서 ​​예상 하이픈을 얻을 수 있지만 다른 플롯을 렌더링 할 때 아무 것도 얻지 못합니다. PNG와 같은 그래픽 장치. 차라리 PDF와 PNG 각각 두 개의 버전을 만들 필요가 없습니다. 나는 "마이너스 해킹"을 해제 할 수 있다면

는 그래픽 장치에서 렌더링 동작은 일치 것이며, 단순히 "프린트"여러 장치에 플롯은 다른 형식으로 그것을 얻을 수 있습니다. 예를 들어, 나는 다음을 수행 할 수 있습니다, 그리고 하이픈이 플롯의 PDF 및 PNG 버전에서 지속적으로 렌더링 거라고 : 당신의 도움에 대한

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") 

감사합니다!

답변

7

컴퓨터가 지원하는 경우 capabilities()을 입력하면 컴퓨터가 지원되는지 여부를 알 수 있으며 cairo_pdf()을 대신 사용할 수 있습니다.

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

저에게 도움이됩니다! 'ggsave을 (파일 = "/tmp/service-scaling.pdf", P, cairo_pdf을)': 다음은 정확히 내가 원하는 생산 –

0
: 나는 위의 두 PDF 파일에 사용되는 코드는,

enter image description here enter image description here

을 여기, 나뿐만 아니라 그것을 포함 할 수 있기 때문에 : 다른 음모를 꾸미고 장치와 마찬가지로 "-" 이상을 처리 할 것

PDF에 대한 해결 방법은() here 설명 : 은 교체 - 유니 코드 문자 "\255" 또는 UTF8 "\uad"에 하이픈 "". 이것은 R- 콘솔에서는 훌륭하게 인쇄되지 않지만 pdf에서는 인쇄 될 것입니다. 쉽게 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() 

은 내가 cairo_pdf에서 수 없습니다 CMYK의 colormode,에서 PDF (나중에 변환의 대안을 내보낼 때문에이 솔루션을 사용하여 종료 CMYK로 설정하면 작은 파일의 경우 파일 크기가 10 배 증가합니다. 다른 사람이 사용할 수 있기를 바랍니다.