web-dev-qa-db-fra.com

Augmenter le nombre de ticks d'axe

Je génère des graphiques pour certaines données, mais le nombre de ticks est trop petit, il me faut plus précision à la lecture.

Existe-t-il un moyen d'augmenter le nombre de ticks d'axes dans ggplot2?

Je sais que je peux dire à ggplot d'utiliser un vecteur comme ticks d'axe, mais ce que je veux, c'est augmenter le nombre de ticks, pour toutes les données. En d'autres termes, je veux que le nombre de ticks soit calculé à partir des données.

Peut-être que ggplot le fait en interne avec un algorithme, mais je n'ai pas trouvé comment il le fait, pour changer en fonction de ce que je veux.

166
João Daniel

Vous pouvez remplacer les échelles par défaut de ggplots en modifiant scale_x_continuous et/ou scale_y_continuous. Par exemple:

library(ggplot2)
dat <- data.frame(x = rnorm(100), y = rnorm(100))

ggplot(dat, aes(x,y)) +
  geom_point()

Vous donne ceci:

enter image description here

Et outrepasser les échelles peut vous donner quelque chose comme ceci:

ggplot(dat, aes(x,y)) +
  geom_point() +
  scale_x_continuous(breaks = round(seq(min(dat$x), max(dat$x), by = 0.5),1)) +
  scale_y_continuous(breaks = round(seq(min(dat$y), max(dat$y), by = 0.5),1))

enter image description here

Si vous voulez simplement "zoomer" sur une partie spécifique d'un tracé, regardez respectivement xlim() et ylim(). Une bonne perspicacité peut également être trouvée ici pour comprendre également les autres arguments.

163
Chase

Sur la base de commentaire de Daniel Krizian , vous pouvez également utiliser la fonction pretty_breaks de la bibliothèque scales, qui est importée automatiquement:

_ggplot(dat, aes(x,y)) + geom_point() +
scale_x_continuous(breaks = scales::pretty_breaks(n = 10)) +
scale_y_continuous(breaks = scales::pretty_breaks(n = 10))
_

Tout ce que vous avez à faire est d'insérer le nombre de ticks souhaité pour n.


Une solution légèrement moins utile (puisque vous devez spécifier à nouveau la variable de données), vous pouvez utiliser la fonction intégrée pretty:

_ggplot(dat, aes(x,y)) + geom_point() +
scale_x_continuous(breaks = pretty(dat$x, n = 10)) +
scale_y_continuous(breaks = pretty(dat$y, n = 10))
_
143
slhck

Vous pouvez fournir un argument de fonction à scale, et ggplot utilisera cette fonction pour calculer les emplacements des ticks.

library(ggplot2)
dat <- data.frame(x = rnorm(100), y = rnorm(100))
number_ticks <- function(n) {function(limits) pretty(limits, n)}

ggplot(dat, aes(x,y)) +
  geom_point() +
  scale_x_continuous(breaks=number_ticks(10)) +
  scale_y_continuous(breaks=number_ticks(10))
62
crowding

Aditionellement,

ggplot(dat, aes(x,y)) +
geom_point() +
scale_x_continuous(breaks = seq(min(dat$x), max(dat$x), by = 0.05))

Fonctionne pour les données en abscisse ou à échelle discrète (c.-à-d. Sans arrondir).

3
bmc