65 votes

Personnaliser les étiquettes des axes

J'ai un simple geom_point dans laquelle le x La variable est ordinale, prenant 5 valeurs (codées 1:5).

Dans le graphe, je voudrais les remplacer par 5 étiquettes de texte correspondantes. Est-il possible de le faire dans ggplot ?

59voto

Chase Points 27342

Vous devriez être en mesure de le faire avec scale_x_discrete .

library(ggplot2)
df <- data.frame(x = 1:5, y = sample(1:10, 5, TRUE))

qplot(factor(x),y, data = df) + 
scale_x_discrete(breaks = 1:5, labels=c("foo","bar","baz","phi","fum")) +
xlab(NULL)

12voto

Prasad Chalasani Points 9020

scale_x_discrete devrait le faire :

x <- sample(1:5, 20, T)
y <- rnorm(20) + x

df <- data.frame(x = ordered(x), y = y)

ggplot(df,aes(x,y)) + geom_point() + 
   scale_x_discrete(breaks = 1:5, labels = letters[1:5])

3voto

Gavin Simpson Points 72349

Voici un exemple reproductible qui, je pense, résume votre question ( ?):

require(ggplot2)
dat <- data.frame(X = sample(1:5, 100, replace = TRUE),
                  Y = rnorm(100))

Les données dont vous disposez ne sont pas immédiatement claires, mais si vous voulez dire quelque chose comme ça :

(p1 <- ggplot(dat, aes(x = X, y = Y)) + geom_point())

Alors je pense que vous voulez un stripchart, ce qui peut être réalisé dans ggplot via un facteur

dat2 <- within(dat, X <- factor(X, labels = letters[1:5]))
(p2 <- ggplot(dat2, aes(x = X, y = Y)) + geom_point())

Si ce n'est pas ce que vous voulez dire, pouvez-vous modifier votre question pour donner un exemple ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X