2010-10-26 3 views
9

J'utilise geom_density pour tracer des densités avec des queues très fines. Je veux restreindre la plage de l'axe Y (de sorte que le haut de la distribution soit hors écran et que la queue soit plus visible), mais il jette les données hors écran lorsqu'il calcule la densité, plutôt que de ne pas montrer ce que est hors de l'écran.Limiter la plage de l'axe y sur ggplot + geom_density

E.g.

Cette trace la distribution complète,

testData = data.frame(counts=c(rep(1,5), 1:10)) 
ggplot(testData, aes(x=testData$counts))+geom_density() 

mais lorsque la plage y est limitée, il semble que la distribution a moindre soutien.

ggplot(testData, aes(x=testData$counts))+geom_density()+scale_y_continuous(limits=c(0,0.1)) 

Comment puis-je effectuer un zoom avant sur l'axe des ordonnées sans jeter les données?

Répondre

27

Je crois que vous cherchez coord_cartesian():

ggplot(testData, aes(x=testData$counts))+geom_density()+coord_cartesian(ylim=c(0, 0.1)) 
+0

fantastique. Je suppose que j'ai dû mal interpréter le but scale_y_continuous. Je suppose que cela doit être plus pour tronquer la plage de l'ensemble de données. – Pengin

+5

Exactement. Les fonctions de confort 'xlim()' et ylim() 'font également tomber les données en dehors de leurs limites, il est donc utile de se méfier de celles-ci. J'utilise typiquement 'xlim()' et 'ylim()' pour développer la grille (par exemple, pour appliquer la symétrie), et 'coord_cartesian()' pour zoomer. –

Questions connexes