2010-03-19 9 views
6

Je crée un tracé dans R, et j'ai besoin d'ajouter un tiret à certaines étiquettes d'axe, par opposition à votre trait d'union de tous les jours.Comment puis-je ajouter un tiret à un tracé dans R?

axis(1, at=c(0:2), labels=c("0-10","11-30","31-70")) 

Je suis sous R version 2.8.1 sous Linux.

Répondre

1

Vous utilisez Linux, donc en fonction de la façon dont R comprend unicode, vous pouvez mapper l'une de vos touches de clavier de rechange au Compose Key, puis tapez-le. Pour obtenir un -, appuyez sur Composer puis sur la touche normale deux ou trois fois (en fonction des mappages de votre système). Notez que lorsque vous utilisez la touche de composition, vous ne la maintenez pas enfoncée - il suffit d'appuyer sur les touches en séquence.

Comment exactement activer cette option, mais dans Ubuntu, Système-> Préférences-> Clavier, onglet Mise en page, bouton Options de mise en page, et sélectionnez quelque chose approprié pour l'élément "Composer la position de clé". J'utilise généralement la touche Menu.

Editer: Mon erreur, vous vouliez un en-tiret, pas un em-dash. Puis en-dash (-) est Compose dash dash period, plutôt que Compose dash dash dash.

+0

Merci. J'ai essayé de copier et coller dans les étiquettes, mais cela se traduit par "Erreur: caractère multi-octet invalide dans l'analyseur à la ligne x". Sur une autre note, print ("\ 55") me donnera un tiret en ASCII, mais en dash est ASCII étendu, ce qui me pose problème. print ("\ 150") devrait faire l'affaire (par tables ASCII que j'ai googlé), mais pas de dés. – Banjer

+0

@Banjer - Je l'ai juste essayé dans R 2.9.2 dans Ubuntu 9.10, et copier le tableau de bord et le saisir directement fonctionnait correctement, et il s'affichait correctement sur l'axe. Peut-être que vous devriez mettre à jour R? – kwatford

+1

Pour plus de clarté, cela a fonctionné quand je l'ai entré à partir du repl. Si vous essayez de mettre cela dans un fichier source, vous devez vous assurer que le fichier source utilise un encodage approprié. Vous pouvez l'ouvrir dans un éditeur de texte comme gedit puis dans la boîte de dialogue "Enregistrer sous", sélectionnez UTF-8 ou quelque chose comme ça. – kwatford

2

Dans cet exemple, vous pouvez utiliser la fonction expression() pour obtenir en traits rendus correctement:

axis(1, 
    at=c(0:2), 
    labels=c(expression(0-10), 
       expression(11-30), 
       expression(31-70))) 
+0

Merci ayman, mais cela ne semble pas fonctionner pour moi. Je reçois à nouveau l'erreur "caractère multi-octet invalide". J'ai également essayé d'ajouter des citations dans divers endroits. – Banjer

0

question ancienne, mais toujours un problème ...

J'utilise R VSN 3.3.2 sur OSX 10.12.2, tracer avec plot() dans un fichier pdf que j'importe dans Affinity Designer vsn 1.5.4. Les libellés d'axe de la forme "2-0" s'affichent dans Affinity Designer avec le tiret chevauchant le "0". Je ne sais pas si le problème réside avec Affinity Designer ou le fichier pdf ou quoi. Il serait bon de pouvoir essayer différents caractères de tirets Unicode, mais les fichiers R et pdf ne semblent pas encore être entièrement équipés pour traiter Unicode en utilisant les polices par défaut.

Solution: le paquet "cairo" dans R:

library("cairo") 
d = 0:11 
names(d) = paste(0:11, "-", 11:0, sep="") 
names(d) = gsub("-", "\U2012", names(d)) # U+2012 is "figure dash" 
d 
barplot(d) 
cairo_pdf(filename="x.pdf", width=11, height=8) 
barplot(d) 
dev.off() 

Les tirets apparaissent dans la console R, un dispositif de traçage par défaut R, et le fichier pdf vu à la fois Aperçu et Designer d'affinité.