ustaw tylko dolną granicę limitu dla ggplot


82

Czy można ustawić tylko dolną granicę limitu dla skali ciągłej? Chcę, aby wszystkie moje wykresy były oparte na 0, bez konieczności określania górnej granicy.

na przykład

+ scale_y_continuous(minlim=0)

Odpowiedzi:


118

Możesz użyć expand_limits

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

Oto porównanie tych dwóch:

  • bez expand_limits

  • z expand_limits

Od wersji 1.0.0 programu ggplot2możesz określić tylko jeden limit, a drugi będzie taki, jak zostałby normalnie określony, ustawiając drugi limit na NA. Takie podejście pozwoli zarówno na rozszerzenie, jak i skrócenie zakresu osi.

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

podanie go za pomocą ylim(c(0, NA))daje identyczną liczbę.


@PatrickT Czy chodziło Ci o komentarz do stackoverflow.com/q/27028825/892313 ?
Brian Diggs

Dokładnie to, czego szukałem. Dziękuję
Veera

12

Co powiesz na używanie aes(ymin=0), jak w:

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

7
To zastępuje ymin dla geom_errorbar itp .; expand_limits () wydaje się bezpieczniejsza.
Mark

To nie jest powszechne, tak jak w przypadku geom_densitydaje mi Error: stat_bin() must not be used with a y aestheticlub po umieszczeniu wewnątrz geom_density, Warning: Ignoring unknown aesthetics: ymin(ten ostatni jest w pełni expected)
PatrickT

7

Możesz również wypróbować następujący kod, który da ci minimalną oś Y na zero, a także bez dodatkowej przerwy między osią x a minimalną wartością y.

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

1
Czy jest na to sposób coord_cartesian()zamiast tego?
randy

-1

Nie sądzę, że możesz to zrobić bezpośrednio. Aby obejść ten problem, możesz naśladować sposób, w jaki ggplot2 określa górną granicę:

scale_y_continuous(limits=c(0, max(mydata$y) * 1.1))
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.