Éste no es tan simple como parece. Técnicamente, este problema es dependiente de OS/locale/pdf writer/Sweave (consulte "Instalación y administración de R", capítulo 7). Como estoy ejecutando GNU/Linux, esta "solución" no está dirigida a usuarios de Mac y Windows. Y solo para hacer las cosas un poco más complicadas, las distribuciones GNU/Linux son diferentes, por lo que hay una gran posibilidad de que si algo funciona, digamos, Ubuntu, no funcione en Arch Linux.
Voy a utilizar mtcars
conjunto de datos. Vamos a crear algunos gráfico básico con caracteres localizados:
pdf("foo.pdf")
boxplot(mpg ~ cyl, data = mtcars, ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja")
dev.off()
(curso intensivo de idioma serbio: "Potrošnja goriva" se refiere a consumo de combustible, "broj cilindara" significa # de cilindros y "Dijagram raspršenja" es equivalente para el diagrama de dispersión)
Ahora, consigo montón de advertencias:
Warning messages:
1: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Dijagram raspršenja' in 'mbcsToSbcs': dot substituted for <c5>
2: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Dijagram raspršenja' in 'mbcsToSbcs': dot substituted for <a1>
3: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Dijagram raspršenja' in 'mbcsToSbcs': dot substituted for <c5>
4: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Dijagram raspršenja' in 'mbcsToSbcs': dot substituted for <a1>
5: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Potrošnja goriva' in 'mbcsToSbcs': dot substituted for <c5>
6: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Potrošnja goriva' in 'mbcsToSbcs': dot substituted for <a1>
7: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Potrošnja goriva' in 'mbcsToSbcs': dot substituted for <c5>
8: In title(ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja") :
conversion failure on 'Potrošnja goriva' in 'mbcsToSbcs': dot substituted for <a1>
Mientras options(encoding = "CP1250")
no hace el truco - consigo las mismas advertencias, pdf.options(encoding = "CP1250")
vías de recuperación s it, y lo mismo significa pdf(file = "foo.pdf", encoding = "CP1250")
. Por lo tanto, recuperaré mi codificación anterior con options(encoding = "native.enc")
, configuré pdf.options
como se indicó anteriormente y hago bien las cosas.
Algunos usuarios se escapan simplemente configurando pdf.options
, y no tienen problemas con Sweave. Entonces, debes insertar esta parte del código en algún lugar de.Rnw archivo, antes de iniciar el trazado:
<<setOptions, echo = FALSE, results = hide>>==
pdf.options(encoding = "CP1250")
@
y más tarde, acaba de hacer:
<<plotTheFigure, echo = TRUE, fig = TRUE>>==
# I've set echo to TRUE intentionally, to prove my point here
boxplot(mpg ~ cyl, data = mtcars, ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja")
@
Y el mismo escenario representa gráficos ggplot2.
Algunos obtendrán la salida correcta, ¡pero yo no! Y como he dicho antes, si está ejecutando Ubuntu, hay una gran posibilidad de que esto funcione, pero por ahora, parece que no puedo hacerlo vivo y patear en Arch.
Y para guardar sus teclas, puede descargar Sweave file y/o PDF file (ejecutado en la máquina Arch). Como puede ver, los caracteres localizados se muestran correctamente dentro de la función de trazado, pero quedan distorsionados dentro de Sweave. Ahora, si intento guardar el gráfico en un archivo PDF (sin Sweaving), obtengo el correct output.
Por lo tanto, he resuelto algunos problemas, pero aún queda mucho trabajo de prueba y error.
Ejecuta el archivo .Rnw en tu máquina y dame tu opinión. Para facilitar las cosas, he creado Rscript que recopila la información del sistema (no la información personal) que considero relevante en este caso: aquí 'el source, y aquí está mi output.
Esto funciona para su problema: http://stackoverflow.com/questions/31221471/custom-graphical-device-in-sweave –