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.
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:
Distributed under CC BY.
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).
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