2017-06-14 2 views
0

J'essaye de sauvegarder des parcelles avec des légendes contenant des caractères UTF pour les mâles et femelles à pdf en R. Quand je conspire à l'appareil graphique:caractères UTF corrompus dans les parcelles pdf générées par R

plot(1) 
legend('topright', bty = 'n', 
     expression(italic("legend"~"\u2640"~"\u2642"))) 

la légende de l'intrigue semble comme prévu

enter image description here

Je peux même l'enregistrer au format PDF par un clic droit et « enregistrer au format PDF ». Cependant, lorsque j'utilise la fonction intégrée pdf

pdf('test.pdf') 
plot(1) 
legend('topright', bty = 'n', 
     expression(italic("legend"~"\u2640"~"\u2642"))) 
dev.off() 

il tombe un avertissement et affiche des caractères corrompus à la place:

enter image description here

cairo_pdf ne tombe pas un avertissement, mais il ne montre pas les symboles corrects soit :

enter image description here

accordin g à this post, je devrais spécifier l'encodage qui soutiendrait mes symboles, mais je n'ai aucune idée comment savoir ce qu'il fait (en dehors du défaut Helvetica j'ai essayé MacRoman sans succès).

Il est évident qu'il est possible que R génère un pdf contenant ces symboles (parce que je suis capable de le faire par le clic droit). Cependant, j'aimerais y parvenir de manière automatisée.

Mes paramètres de session R:

R version 3.3.1 (2016-06-21) 
Platform: x86_64-apple-darwin13.4.0 (64-bit) 
Running under: OS X 10.11.5 (El Capitan) 

locale: 
[1] en_US.UTF-8/C/en_US.UTF-8/C/en_US.UTF-8/C 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

J'ai aussi réussi à reproduire même comportement sur un autre ordinateur avec macOS Sierra 10.12.1.

+0

La raison pour laquelle je suis réticent à supprimer cette question est qu'il m'a fallu 4 heures pour trouver la bonne réponse en question avec une réponse acceptée qui n'a pas travaillé pour moi. Peut-être que cela va simplifier la recherche d'autres personnes, je laisse cette décision sur la communauté. –

Répondre

1

salut que cela fonctionne pour moi (sur Windows)

cairo_pdf('test.pdf' , family="DejaVu Sans") 
plot(1) 
legend('topright', bty = 'n', 
    paste("legend",quote("\u2640") ,quote("\u2642") )) 
dev.off() 

Unicode Characters in ggplot2 PDF Output

sur mac essayer cette

pdf('test.pdf',encoding="MacRoman") 

Plotting symbols fails in PDF

+0

Ni 'cairo_pdf ('test.pdf', family =" DejaVu Sans ")' ni 'pdf ('test.pdf', encoding =" MacRoman ")' ne fonctionne. Il produit exactement les mêmes sorties que sans spécification d'encodage. –

1

Une réponse de travail sur OS X utilise quartz:

quartz(type = 'pdf', file = 'test.pdf') 

Source: https://stackoverflow.com/a/19610909/2962344

cairo_pdf semble fonctionner sur Linux .

+0

Avez-vous essayé 'CairoPDF' de la bibliothèque' Cairo'? Ce n'est pas la même chose que la fonction 'cairo_pdf()'. –