R ggplot2 scale_y_continuous : die Kombination breaks & Grenzen
Problem: ich finde keine Art und Weise zu kombinieren, die Brüche und Grenzen Befehle in ggplot2
. Die y-Achse sollte immer enthalten den Bereich von 0-40 und breaks=c(5,10,15,20,25,30,35)
. Die x-Achse sollte von 0-100, breaks=c(10,20,30,40,50,60,70,80,90,100)
. Ich will NICHT zur Anzeige von Daten, die außerhalb dieses Bereichs.
Versuchte ich + ylim
, aber das überschreibt meine Pausen.
Ich habe versucht + expand
, aber das zeigt auch Daten außerhalb des Bereichs, den ich haben möchte(1-100).
Ich habe versucht, sowohl das hinzufügen von Pausen und die Begrenzung der Bandbreite in einem zweiten Schritt, aber die y-Achse von meinem ersten Schritt wird einfach überschrieben, wenn ich das mache.
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
Irgendeine Idee wie es zu lösen ist?
- Ist
Tili
eine eingebaute dataset? Kann man diese reproduzierbar für andere? - Haben Sie versucht, mit dem
limits
argument, z.B.scale_x_continuous
? - Loswerden
expand_limits()
verwenden Sie nichtylim
oderxlim
, verwenden Sie einfachscale_y_continuous
undscale_x_continuous
nehmen Sie beidebreaks
undlimits
Argumente. - Ich habe versucht, ein reproduzierbares Beispiel, aber mein code hat nicht mehr funktioniert mit anderen Daten. Sorry für das! 🙁 Ich glaube allerdings, dass es nicht wirklich wichtig ist in meinem Beispiel, was die Daten sind, das problem ist, dass die ggplot Grammatik läßt mich nicht kombinieren, Grenzen = Pausen-und =, so dass ich dachte, es sollte in Ordnung sein, ohne dass die Daten
- Ja, habe ich. Es überschreibt auch die Pausen.
- ja, Sie tun nehmen Sie die Argumente, aber wenn ich Grenzen UND bricht, R-sets einige zufällige Pausen, statt mit mir, und ich kann nicht herausfinden, warum.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als JasonAizkalns kommentiert Ihr problem nicht gelöst werden kann, ohne n reproduzierbare Beispiel. Der code unten tut, was Sie wollen, auf die iris-Daten und sollten arbeiten für Ihr Beispiel als auch.
scale_x_continuous(breaks = c(5.5,6.5), limits = c(5,7))
war die Lösung!!! Was Sie möglicherweise im Auge zu behalten, wenn Sie mit log-transformierten Daten, wie mich, ist, dass, wenn Sie einfach nur put c(0,40) oder ähnliches, Ihre Daten werden möglicherweise sehr klein angezeigt, da Sie den Abstand von 0 zur ersten Pause (10 in meinem Fall) ist groß und es könnte besser sein, verwenden Sie das wirkliche untere Grenze, Ihre Daten (4.4 in meinem Fall).scale_y_continuous(trans = log10_trans(), breaks = trans_breaks('log10', function(x) 10^x), labels = trans_format('log10', math_format(.x)))