Celui-ci n'est pas aussi simple que cela puisse paraître. Techniquement, ce problème est lié à OS/locale/pdf writer/Sweave (voir "R Installation et Administration", chapitre 7). Puisque je cours sous GNU/Linux, cette "solution" n'est pas destinée aux utilisateurs Mac et Windows. Et juste pour rendre les choses un peu plus compliquées, les distributions GNU/Linux diffèrent, donc il y a une grande chance que si quelque chose fonctionne, disons, Ubuntu, ne fonctionne pas sur Arch Linux.
Je vais utiliser le jeu de données mtcars
. Nous allons créer un graphe de base avec des caractères localisés:
pdf("foo.pdf")
boxplot(mpg ~ cyl, data = mtcars, ylab = "Potrošnja goriva", xlab = "Broj cilindara", main = "Dijagram raspršenja")
dev.off()
(crash cours de langue serbe: « Potrošnja goriva » signifie la consommation de carburant, « Broj cilindara » signifie nombre de cylindres et « Dijagram raspršenja » est équivalent pour scatterplot)
maintenant, je reçois tas d'avertissements:
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>
Alors que options(encoding = "CP1250")
ne fait pas l'affaire - je reçois les mêmes mises en garde, pdf.options(encoding = "CP1250")
mend s it, et le même pour pdf(file = "foo.pdf", encoding = "CP1250")
. Donc, je vais retrouver mon ancien encodage avec options(encoding = "native.enc")
, mettre pdf.options
comme indiqué précédemment et faire les choses correctement.
Certains utilisateurs s'en tirent simplement en réglant pdf.options
et ne rencontrent aucun problème avec Sweave. Donc, vous devriez insérer cette partie du code quelque part.fichier RNW, avant de commencer le traçage:
<<setOptions, echo = FALSE, results = hide>>==
pdf.options(encoding = "CP1250")
@
et plus tard, il suffit de faire:
<<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")
@
Et le même scénario est synonyme de graphiques ggplot2.
Certains d'entre vous obtiendront une sortie correcte, mais pas moi! Et comme je l'ai déjà dit, si vous utilisez Ubuntu, il y a une grande chance que cela fonctionne, mais pour l'instant, je ne peux pas sembler le faire vivre et lancer dans Arch. Et pour enregistrer vos frappes, vous pouvez télécharger Sweave file et/ou PDF file (exécuté sur la machine Arch). Comme vous pouvez le voir, les caractères localisés s'affichent correctement dans la fonction de tracé, mais se déforment dans Sweave. Maintenant, si j'essaie d'enregistrer le graphique au format PDF (sans Sweaving), j'obtiens le correct output. Donc, j'ai résolu certains problèmes, mais il reste encore beaucoup de travail à faire en termes d'essais et d'erreurs. Veuillez exécuter le fichier .RNW sur votre ordinateur et me donner quelques commentaires. Pour faciliter les choses, j'ai créé Rscript qui recueille vos informations système (pas d'informations personnelles) que je trouve pertinentes dans ce cas: ici le source, et voici mon output.
Cela fonctionne pour votre problème: http://stackoverflow.com/questions/31221471/custom-graphical-device-in-sweave –