Setze nur die Untergrenze eines Limits für ggplot


81

Ist es möglich, nur die Untergrenze eines Grenzwerts für die kontinuierliche Skalierung festzulegen? Ich möchte alle meine Diagramme auf 0 setzen, ohne die Obergrenze angeben zu müssen.

z.B

+ scale_y_continuous(minlim=0)

Antworten:


116

Sie können verwenden expand_limits

ggplot(mtcars, aes(wt, mpg)) + geom_point() + expand_limits(y=0)

Hier ist ein Vergleich der beiden:

  • ohne expand_limits

  • mit expand_limits

Ab Version 1.0.0 von ggplot2können Sie nur ein Limit angeben und das andere so festlegen, wie es normalerweise durch Festlegen dieses zweiten Limits festgelegt wird NA. Dieser Ansatz ermöglicht sowohl das Erweitern als auch das Abschneiden des Achsenbereichs.

ggplot(mtcars, aes(wt, mpg)) + geom_point() +
  scale_y_continuous(limits = c(0, NA))

Wenn Sie es über ylim(c(0, NA))angeben, erhalten Sie eine identische Zahl.


@PatrickT Meinten Sie das als Kommentar zu stackoverflow.com/q/27028825/892313 ?
Brian Diggs

Genau das, wonach ich gesucht habe. Vielen Dank
Veera

12

Wie wäre es mit aes(ymin=0), wie in:

ggplot(mtcars, aes(wt, mpg)) + geom_point() + aes(ymin=0)

7
Dies überschreibt das ymin für geom_errorbar usw.; expand_limits () scheint sicherer zu sein.
Mark

Dies ist nicht universell, wie geom_densityes für mich gibt Error: stat_bin() must not be used with a y aestheticoder wenn es innerhalb des platziert geom_densitywird Warning: Ignoring unknown aesthetics: ymin(letzteres wird voll erwartet)
PatrickT

7

Sie können auch den folgenden Code ausprobieren, der Ihnen die minimale y-Achse bei Null und auch ohne die zusätzliche Lücke zwischen der x-Achse und dem minimalen y-Wert gibt.

scale_y_continuous(limits = c(0, NA), expand = c(0,0))

1
Gibt es eine Möglichkeit, dies coord_cartesian()stattdessen zu tun ?
Randy

-1

Ich glaube nicht, dass Sie das direkt tun können. Als Workaround können Sie jedoch die Art und Weise nachahmen, wie ggplot2 die Obergrenze bestimmt:

scale_y_continuous(limits=c(0, max(mydata$y) * 1.1))
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.