2012-05-03 10 views
5

En R, al guardar un trazado en un archivo PDF o Postscript, los guiones en las etiquetas de los ejes se convierten en signos menos. Esto, aparentemente, es por diseño. De acuerdo con la documentación del dispositivo "postscript":¿Hay alguna manera de desactivar el "menos hack" en PDF/Poscript?

Existe una excepción [a las reglas de codificación normales]. El carácter 45 ('"-"') siempre se establece como menos (su valor en Adobe ISOLatin1) aunque es guión en las otras codificaciones . Hyphen está disponible como carácter 173 (octal 0255) en todas las las codificaciones en latín, cirílico y griego. (Esto se puede introducir como ‘ '\ UAD'’ en una localización UTF-8.)

¿Hay alguna manera de desactivar esta función?

El problema que tengo es que a menudo guardo parcelas en varios formatos y, si sigo la solución sugerida "\ uad", obtengo los guiones esperados en Postscript/PDF pero nada al renderizar mis gráficos a otros dispositivos gráficos como PNG. Prefiero no tener que crear dos versiones de cada trama, una para PDF y otra para PNG.

Si pudiera deshabilitar el "menos hack", el comportamiento de reproducción en los dispositivos gráficos sería consistente, y podría simplemente "imprimir" un diagrama en varios dispositivos para obtenerlo en diferentes formatos. Por ejemplo, me gustaría ser capaz de hacer lo siguiente, y tienen los guiones hacen constantemente en ambas versiones en PDF y PNG de la trama:

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

Gracias por su ayuda!

Respuesta

7

Si su máquina lo admite (y puede escribir capabilities() para saber si lo hace), podría utilizar cairo_pdf(). Parece manejar "-" más como los otros dispositivos de trazado:

enter image description here enter image description here

En este caso, debido a que también podría incluirlo, es el código que he usado para los dos pdfs arriba:

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

¡Eso funciona para mí! Lo siguiente produce exactamente lo que quiero: 'ggsave (file =" /tmp/service-scaling.pdf ", p, cairo_pdf)' –

0

Hay una solución alternativa para pdf() que se describe here: . Reemplace el guión "-" con el carácter Unicode "\255" o en UTF8 "\uad". Esto podría no imprimirse bien en la consola R, pero lo hará en el pdf. puede ser fácilmente sustituido usando 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() 

yo terminamos utilizando esta solución porque quiero exportar un PDF en CMYK ColorMode, lo cual no es posible en cairo_pdf (y la alternativa de conversión más tarde para CMYK hace que el tamaño del archivo aumente 10 veces para archivos pequeños). Espero que alguien más pueda usarlo.

Cuestiones relacionadas