J'ai un tracé comme celui-ci:
p<-ggplot() + geom_line(data= myData, aes(x = myData$x , y = myData$y)) + scale_x_log10()+ scale_y_log10()
Ma valeur x est seq (9880000, 12220000, 10000)
Il n'y a que une cassure sur l'axe des abscisses du tracé, que dois-je faire pour obtenir au moins 3 pauses sur l'axe des x du tracé?
3 Réponses :
Ajoutez ceci entre vos parenthèses: breaks = seq ( spécifiez, breaks, ici )
Par exemple, si vous vouliez une pause à 0, 10, 100: scale_x_log10 ((pauses = seq (0,10,100))
Je suppose que vous vouliez probablement dire breaks = c (0, 10, 100)
plutôt que seq ()
?
J'ajoute: scale_x_log10 (breaks = seq (9880000, 12220000, 1000000))
.
Voici mon exemple reproductible:
library(random) library(ggplot2) z <- randomStrings(n=235, len=5, digits=TRUE, upperalpha=TRUE, loweralpha=TRUE, unique=TRUE, check=TRUE) x <- seq(9880000, 12220000, 10000) y <- randomNumbers(n=235, min=9880000, max=12220000, col=1) df <- data.frame(z, x, y) head(df) V1 x V1.1 1 378VO 9880000 11501626 2 AStRK 9890000 10929705 3 sotp4 9900000 11305700 4 AS4DR 9910000 11302110 5 7iFdk 9920000 11611918 6 HIS7z 9930000 11175074 p<-ggplot() + geom_line(data= df, aes(x = df$x , y = df$V1.1)) + scale_y_log10() p + scale_x_log10(breaks=seq(9880000, 12220000, 1000000))
J'espère que c'est utile ...
Voici un exemple entièrement reproductible du problème de l'affiche originale où un graphique à l'échelle logarithmique n'affiche qu'une seule valeur de rupture sur l'axe des x. Je montre trois solutions possibles ci-dessous.
library(ggplot2) # Create a reproducible example data.frame using R functions. x = seq(9880000, 12220000, 10000) # Use set.seed() so that anyone who runs this code # will get the same sequence of 'random' values. set.seed(31415) y = cumsum(runif(n=length(x), min=-1e5, max=1e5)) + 1e6 dat = data.frame(x=x, y=y) # Original poster's plot. p1 = ggplot(data=dat, aes(x=x, y=y)) + geom_line() + scale_x_log10() + scale_y_log10() + labs(title="1. Plot has only one x-axis break.") # Add extra x-axis breaks manually. x_breaks = c(10^7.0, 10^7.04, 10^7.08) p2 = ggplot(data=dat, aes(x=x, y=y)) + geom_line() + scale_x_log10(breaks=x_breaks) + scale_y_log10() + labs(title="2. Add some x-axis breaks manually.") # Add extra x-axis breaks in semi-automated manner. x_breaks = 10^pretty(log10(x)) x_labels = formatC(x_breaks, format = "e", digits = 2) p3 = ggplot(data=dat, aes(x=x, y=y)) + geom_line() + scale_x_log10(breaks=x_breaks, labels=x_labels) + scale_y_log10() + labs(title="3. Create x-axis breaks with R functions.") # Skip the log10 scale because the x-values don't span multiple orders of magnitude. p4 = ggplot(data=dat, aes(x=x, y=y)) + geom_line() + scale_y_log10() + labs(title="4. Check appearance without log10 scale for x-axis.") library(gridExtra) ggsave("example.png", plot=arrangeGrob(p1, p2, p3, p4, nrow=2), width=10, height=5, dpi=150)
Pensez à ajouter des exemples de données pour rendre votre question "reproductible", ce qui signifie que nous devrions être en mesure d'exécuter votre code publié dans une nouvelle session R et de reproduire le problème dont vous avez besoin.
En général, c'est une mauvaise pratique d'utiliser l'indexation
$
à l'intérieur deaes ()
même si cela semble parfois fonctionner correctement. Essayez plutôtaes (x = x, y = y)
(en supposant que votre data.framemyData
a des colonnes nomméesx
ety
).