Wymuś początek początku od 0

139

Jak mogę ustawić początek / przechwycenie osi Y i osi X w ggplot2?

Linia osi x powinna znajdować się dokładnie na y=Z.

Z Z=0lub inną podaną wartością.

Jonas Stein
źródło

Odpowiedzi:

199

xlimi ylimnie tnij tego tutaj. Trzeba użyć expand_limits, scale_x_continuousi scale_y_continuous. Próbować:

df <- data.frame(x = 1:5, y = 1:5)
p <- ggplot(df, aes(x, y)) + geom_point()
p <- p + expand_limits(x = 0, y = 0)
p # not what you are looking for

wprowadź opis obrazu tutaj

p + scale_x_continuous(expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0))

wprowadź opis obrazu tutaj

Być może będziesz musiał trochę dostosować rzeczy, aby upewnić się, że punkty nie zostaną ucięte (zobacz na przykład punkt w x = 5i y = 5.

A5C1D2H2I1M1N2O1R2T1
źródło
29
Musiałem też określić limity: scale_x_continuous(expand = c(0, 0), limits = c(0,5))jakoś bez tego nie zadziałało
JelenaČuklina
3
Myślę, że pomocny może być jeszcze jeden element, który polega na użyciu czegoś takiego, expand=expand_scale(mult=c(0,0.1))aby nadal uzyskać wyściółkę na górnych końcach: stackoverflow.com/a/59056123/8400969
Michael
4

Po prostu dodaj je do swojego ggplot:

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

Przykład

df <- data.frame(x = 1:5, y = 1:5)
p <- ggplot(df, aes(x, y)) + geom_point()
p <- p + expand_limits(x = 0, y = 0)
p # not what you are looking for


p + scale_x_continuous(expand = c(0, 0), limits = c(0,NA)) + 
  scale_y_continuous(expand = c(0, 0), limits = c(0, NA))

wprowadź opis obrazu tutaj

Na koniec należy bardzo uważać, aby przypadkowo nie wykluczyć danych z wykresu . Na przykład, a position = 'dodge'może spowodować, że słupek zostanie całkowicie pominięty na wykresie (np. Jeśli jego wartość wynosi zero i zaczynasz oś od zera), więc możesz go nie widzieć i nawet nie wiedzieć, że tam jest. Zalecam najpierw wykreślenie danych w całości, zbadanie, a następnie skorzystanie z powyższej wskazówki, aby poprawić estetykę działki.

stevec
źródło
czy można to również wbudować w nowy motyw ggplot?
Bolle
@Bolle Nie jestem pewien, ale chciałbym się również dowiedzieć, możesz zadać jako osobne pytanie i link do tutaj
stevec
Link tutaj do wykorzystania w przyszłości
stevec