Je génère des graphiques pour certaines données, mais le nombre de graduations est trop petit, j'ai besoin de plus de précision sur la lecture.
Existe-t-il un moyen d'augmenter le nombre de graduations d'axe dans ggplot2?
Je sais que je peux dire à ggplot d'utiliser un vecteur comme graduations d'axe, mais ce que je veux, c'est augmenter le nombre de graduations, pour toutes les données. En d'autres termes, je veux que le nombre de graduations 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 faisait, pour changer selon ce que je veux.
by
argument, à différentes échelles de nombres, c'est-à-dire que 0,5 est une bonne valeur pour cette donnée dont la plage est c (-3,3), mais ce n'est pas une bonne plage pour une donnée de quelle plage est c (0,5000). Y a-t-il une fonction qui le calcule?max-min/30
un "seau" assez courant taille ... mais cela peut ou non être un bon point de départ pour vous.scale_x_date(date_breaks = "5 months", date_minor_breaks = "1 months")
coord_cartesian
doit être utilisé à la place dexlim
. stackoverflow.com/questions/25685185/…Sur la base du commentaire de Daniel Krizian , vous pouvez également utiliser la
pretty_breaks
fonction de lascales
bibliothèque, 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é
n
.Une solution légèrement moins utile (puisque vous devez spécifier à nouveau la variable de données), vous pouvez utiliser la
pretty
fonction intégrée: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))
la source
scales
mais n'ajoute pas les fonctions à votre espace de noms. Vous pouvez donc les appeler sans l'importation en tant quescales::pretty_breaks(n = 10)
.Vous pouvez fournir un argument de fonction à
scale
, et ggplot utilisera cette fonction pour calculer les emplacements des graduations.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))
la source
number_ticks
. Cela a déjà été mis en œuvre danspretty_breaks {scales}
. D'où:ggplot(dat, aes(x,y)) + geom_point() + scale_x_continuous(breaks=pretty_breaks(n=10)) + scale_y_continuous(breaks=pretty_breaks(n=10))
require(scales)
2) cela semble empêcher mes ruptures d'apparaître en notation scientifique, donc 1e6 est changé en 1000000 ??pretty
sans lescales
package, il suffit de fournir les valeurs comme argument. Par exemple:(breaks=pretty(dat$x, n=10))
La prochaine version v3.3.0 de
ggplot2
aura une optionn.breaks
pour générer automatiquement des pauses pourscale_x_continuous
etscale_y_continuous
devtools::install_github("tidyverse/ggplot2") library(ggplot2) plt <- ggplot(mtcars, aes(x = mpg, y = disp)) + geom_point() plt + scale_x_continuous(n.breaks = 5)
plt + scale_x_continuous(n.breaks = 10) + scale_y_continuous(n.breaks = 10)
la source
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 de l'axe des x échelonnées ou discrètes (c'est-à-dire, arrondi pas nécessaire).
la source