提问



我绘制以下内容:


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)


现在说我只想绘制x=-50005000之间的区域,而不是整个范围。


我怎样才能做到这一点?

最佳参考


基本上你有两个选择


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


要么


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


第一个删除给定范围之外的所有数据点,第二个仅调整可见区域。在大多数情况下,你不会看到差异,但如果你对数据适合任何东西,它可能会改变拟合值。


您还可以使用速记函数xlim(或ylim),它与第一个选项一样,删除给定范围之外的数据点:


+ xlim(-5000, 5000)


有关更多信息,请查看 coord_cartesian 的说明。[15]


ggplot2的RStudio备忘单使视觉上非常清晰。以下是该备忘单的一小部分:[16]


[17]


在CC BY下分发。[18]

其它参考1


快速注意:如果您还使用coord_flip()翻转x和y轴,则无法使用coord_cartesian()设置范围限制,因为这两个函数是独占的(请参阅此处)。 [19]


幸运的是,这是一个简单的解决方案;在coord_flip()中设置限制,如下所示:


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


这只会改变可见范围(即不会删除数据点)。