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.framemyDataa des colonnes nomméesxety).