Ik plot het volgende:
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)
Stel nu dat ik alleen de regio tussen x=-5000
tot 5000
wil plotten, in plaats van het hele bereik.
Hoe kan ik dat doen?
Antwoord 1, autoriteit 100%
In principe heb je twee opties
scale_x_continuous(limits = c(-5000, 5000))
of
coord_cartesian(xlim = c(-5000, 5000))
Waarbij de eerste alle gegevenspunten buiten het opgegeven bereik verwijdert en de tweede alleen het zichtbare gebied aanpast. In de meeste gevallen zou u het verschil niet zien, maar als u iets aan de gegevens zou aanpassen, zou dit waarschijnlijk de aangepaste waarden veranderen.
Je kunt ook de verkorte functie xlim
(of ylim
) gebruiken, die net als de eerste optie datapunten buiten het opgegeven bereik verwijdert:
+ xlim(-5000, 5000)
Bekijk voor meer informatie de beschrijving van coord_cartesian
.
De RStudio cheatsheetvoor ggplot2
maakt dit visueel vrij duidelijk . Hier is een klein gedeelte van dat spiekbriefje:
Verdeeld onder CC BY.
Antwoord 2, autoriteit 8%
Snelle opmerking: als u ook coord_flip()
gebruikt om de x- en de y-as om te draaien, kunt u geen bereiklimieten instellen met coord_cartesian()
omdat die twee functies exclusief zijn (zie hier).
Gelukkig is dit een gemakkelijke oplossing; stel je limieten in binnen coord_flip()
als volgt:
p + coord_flip(ylim = c(3,5), xlim = c(100, 400))
Dit verandert alleen het zichtbare bereik (d.w.z. er worden geen gegevenspunten verwijderd).