R ggplot2 scale_y_continuous : la Combinaison des pauses & limites
Problème: je ne trouve aucun moyen de combiner les pauses et les limites des commandes dans ggplot2
. L'axe y doit toujours contenir la gamme de 0-40 et breaks=c(5,10,15,20,25,30,35)
. L'axe x doit être de 0 à 100, breaks=c(10,20,30,40,50,60,70,80,90,100)
. Je ne veux PAS d'affichage des données en dehors de cette plage.
J'ai essayé + ylim
, mais cela écrase mes pauses.
J'ai essayé + expand
, mais cela montre aussi des données en dehors de la gamme que je veux(1-100).
J'ai essayé les deux en ajoutant les pauses et la limitation de la plage, dans une deuxième étape, mais l'axe des y de ma première étape est tout simplement écrasé si je le fais.
plot_Tili_Age_VS_Height <- ggplot(Tili, aes(x = Age, y = Height)) + geom_point() +
geom_smooth(method = "lm", se = FALSE, color = "black", formula = y ~ x) +
scale_y_continuous(trans = "log10", breaks = c(5, 10, 15, 20, 25, 30, 35)) +
expand_limits(y = c(0, 35), x = c(0, 100)) +
scale_x_continuous(trans = "log10", breaks = c(10, 20, 30, 40, 50, 60,70, 80, 90, 100)) +
theme_bw(base_size = 15) +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())
df <- data.frame(x = log(Tili$Age), y = log(Tili$Height))
lm_eqn = function(df) {
m = lm(y ~ x, df)
eq <- substitute(ln(italic(y)) == a + b %*% ln(italic(x)) * "," ~ ~italic(r)^2 ~
"=" ~ r2, list(a = format(coef(m)[1], digits = 2),
b = format(coef(m)[2], digits = 2),
r2 = format(summary(m)$r.squared, digits = 2)))
as.character(as.expression(eq))
}
plot_Tili_Age_VS_Height <- plot_Tili_Age_VS_Height +
annotate("text", x = 30, y = 5, label = lm_eqn(df), hjust = 0,
size = 3, family = "Times", parse = TRUE)
plot_Tili_Age_VS_Height
Une idée de comment résoudre ce problème?
- Est
Tili
construit dans le dataset? Pouvez-vous faire de cette reproductible pour d'autres? - Avez-vous essayé d'utiliser le
limits
argument, par exemple,scale_x_continuous
? - Se débarrasser de
expand_limits()
, ne pas utiliser deylim
ouxlim
, il suffit d'utiliserscale_y_continuous
etscale_x_continuous
, ils prennent à la foisbreaks
etlimits
arguments. - J'ai essayé de faire un exemple reproductible mais mon code ne fonctionne pas plus avec d'autres données. Désolé pour ça! 🙁 Cependant, je crois qu'il n'a pas vraiment d'importance dans mon exemple à ce que les données, le problème est que le ggplot grammaire ne me laisse pas combiner les limites de = et les pauses =, donc j'ai pensé qu'il devrait être correct sans données
- Oui je l'ai fait. Il remplace également les pauses.
- oui, ils ne prennent les arguments, mais si j'ai des limites d'utilisation ET les pauses, R jeux de hasard pauses au lieu d'utiliser la mienne et je ne peux pas comprendre pourquoi.
Vous devez vous connecter pour publier un commentaire.
Comme JasonAizkalns a commenté votre problème ne peut être résolu sans n reproductible exemple. Le code ci-dessous fait ce que vous voulez sur les données de l'iris et devrait fonctionner pour votre exemple, en tant que bien.
scale_x_continuous(breaks = c(5.5,6.5), limits = c(5,7))
était la solution! Ce que vous devez garder à l'esprit si vous utilisez le journal des données transformées comme moi, c'est que si vous mettez simplement c(0,40) ou similaire, vos données peuvent apparaître très petite que la distance de 0 à la première pause (10 dans mon cas) est grand et il peut être préférable d'utiliser la vraie limite inférieure de vos données (4.4 dans mon cas).scale_y_continuous(trans = log10_trans(), breaks = trans_breaks('log10', function(x) 10^x), labels = trans_format('log10', math_format(.x)))