Jak ustawić limity osi w działkach ggplot2 R?

Zaznaczam co następuje:

library(ggplot2)    

carrots <- data.frame(length = rnorm(500000, 10000, 10000))
cukes <- data.frame(length = rnorm(50000, 10000, 20000))
carrots$veg <- 'carrot'
cukes$veg <- 'cuke'
vegLengths <- rbind(carrots, cukes)

ggplot(vegLengths, aes(length, fill = veg)) +
 geom_density(alpha = 0.2)

Teraz powiedzmy, że chcę wykreślić obszar pomiędzy x=-5000 A 5000, zamiast całego zakresu.

Jak mogę to zrobić?
 279
Author: zx8754, 2010-08-31

2 answers

Zasadniczo masz dwie opcje

scale_x_continuous(limits = c(-5000, 5000))

Lub

coord_cartesian(xlim = c(-5000, 5000)) 

Gdzie pierwszy usuwa wszystkie punkty danych poza podanym zakresem, a drugi tylko dostosowuje widoczny obszar. W większości przypadków nie zauważysz różnicy, ale jeśli dopasujesz coś do danych, prawdopodobnie zmienisz dopasowane wartości.

Możesz również użyć funkcji skrótu xlim (lub ylim), która podobnie jak pierwsza opcja usuwa punkty danych spoza podanego zakresu:

+ xlim(-5000, 5000)

Aby uzyskać więcej informacji sprawdź opis coord_cartesian.

RStudio cheatsheet dla ggplot2 sprawia, że jest to dość wyraźne wizualnie. Oto mały fragment tego cheatsheeta:

Tutaj wpisz opis obrazka

Distributed under CC BY.

 483
Author: midtiby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-08 11:37:26

Szybka uwaga: jeśli używasz również coord_flip() do odwrócenia osi x i y, nie będziesz mógł ustawić limitów zakresu za pomocą coord_cartesian(), ponieważ te dwie funkcje są wyłączne (zobacz tutaj).

Na szczęście jest to łatwe rozwiązanie; Ustaw swoje limity w coord_flip() w następujący sposób:

p + coord_flip(ylim = c(3,5), xlim = c(100, 400))

To tylko zmienia zakres widzialny (tzn. nie usuwa punktów danych).

 26
Author: Bill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-02 18:43:57