Como definir limites para os eixos nas parcelas ggplot2 R?

Eu ploto o seguinte:

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)
Agora diga que só quero traçar a região entre x=-5000 a 5000, em vez de toda a gama.

Como posso fazer isso?

 279
Author: zx8754, 2010-08-31

2 answers

Basicamente tens duas opções

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

Ou

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

Onde o primeiro remove todos os pontos de dados fora do intervalo indicado e o segundo apenas ajusta a área visível. Na maioria dos casos, você não veria a diferença, mas se você encaixar qualquer coisa aos dados, provavelmente mudaria os valores ajustados.

Também pode usar a função estenografia xlim (ou ylim), Que, tal como a primeira opção, remove os pontos de dados fora do intervalo indicado:

+ xlim(-5000, 5000)

Para mais verificação das informaçõescoord_cartesian.

O RStudio cheatsheet para ggplot2 deixa isto bem claro visualmente. Aqui está uma pequena parte dessa folha de Cheat:

enter image description here

expedido sob CC por.

 483
Author: midtiby, 2017-06-08 11:37:26

Nota rápida: se também estiver a usar coord_flip() para inverter o eixo x e y, não será capaz de definir limites de intervalo usando coord_cartesian() porque essas duas funções são exclusivas (veja aqui).

Felizmente, esta é uma solução fácil; defina os seus limites dentro de coord_flip() Assim:
p + coord_flip(ylim = c(3,5), xlim = c(100, 400))

Isto altera apenas o intervalo visível (isto é, não remove os pontos de dados).

 26
Author: Bill, 2016-09-02 18:43:57