Indices dans les graphiques en R

95

Je ne trouve pas comment écrire des indices dans le titre ou le sous-titre dans R. Comment puis-je écrire v 1,2 avec 1,2 comme indices?

Merci de votre aide!

Jeffrey
la source

Réponses:

138

expression est votre ami:

plot(1,1, main=expression('title'^2))  #superscript
plot(1,1, main=expression('title'[2])) #subscript
smu
la source
3
Comment charger "2" à partir de la variable? J'ai une boucle et je dois tracer x_ [1] x_ [2] x_ [3] ...
0x2207
6
Vous pouvez utiliser bquotelorsque vous travaillez avec des variables indicées. Dites, nIter <- 2alors plot(1, 1, main = bquote(title[.(nIter)]))c'est exactement ce dont vous avez besoin (extrait de la liste de diffusion R-help ).
fdetsch
119

Si vous cherchez à avoir plusieurs indices dans un texte, utilisez l'étoile (*) pour séparer les sections:

plot(1:10, xlab=expression('hi'[5]*'there'[6]^8*'you'[2]))
Cyrille
la source
6
Wow, une réponse de deux jours à une question de deux ans, qui s'avère être ce dont j'avais besoin. Merci!
Michael
2
Et si vous voulez que l'indice soit une chaîne, mettez-le simplement entre guillemets:plot(1:10, xlab=expression('hi'[5]*'there'[6]^8*'you'['down here']*'and'^'up'*'there'))
Stewart Macdonald
1
C'est un bon conseil car vous pouvez mettre [digits]ou [characters]ou même [a5]en indice mais pas [5a]ou [a a]. J'ai récemment découvert ceci pour:expression('x'['10sdt'])
Cyrille
28

Voir? Expression

plot(1:10,main=expression("This is a subscript "[2]))

entrez la description de l'image ici

Chasse
la source
10

Un indice et faisant référence à une valeur stockée ...

a <- 10
plot(c(0,1), c(0,1), type = 'n', ann = FALSE, xaxt = 'n', yaxt = 'n')
text(0.2, 0.6, cex = 1.5, bquote(paste('S'['f']*' = ', .(a))))

entrez la description de l'image ici

Tony Ladson
la source
5

Un autre exemple, l'expression fonctionne pour les exposants négatifs sans avoir besoin de guillemets autour du nombre négatif:

title(xlab=expression("Nitrate Loading in kg ha"^-1*"yr"^-1))

et vous n'avez besoin que de * pour séparer les sections comme mentionné ci-dessus (lorsque vous écrivez un exposant ou un indice et que vous devez ajouter plus de texte à l'expression après).

user29609
la source
1
Merci d'expliquer explicitement ce que fait le *!
Lalochezia
4

Comme d'autres utilisateurs l'ont souligné, nous utilisons expression(). Je voudrais répondre à la question originale qui comporte une virgule dans l'indice:

Comment puis-je écrire v 1,2 avec 1,2 comme indices?

plot(1:10, 11:20 , main=expression(v["1,2"]))

Aussi, j'aimerais ajouter la référence pour ceux qui cherchent à trouver la expressionsyntaxe complète dans le Rtraçage: Pour plus d'informations, consultez la ?plotmathpage d'aide. Fonctionnementdemo(plotmath) présentera de nombreuses expressions et une syntaxe pertinente.

N'oubliez pas d'utiliser *pour joindre différents types de texte dans une expression.

Voici quelques exemples de sortie de demo(plotmath):

entrez la description de l'image ici

Megatron
la source