我绘制以下内容:
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=-5000
到5000
之间的区域,而不是整个范围。
我该怎么做?
答案 0 :(得分:542)
基本上你有两个选择
scale_x_continuous(limits = c(-5000, 5000))
或
coord_cartesian(xlim = c(-5000, 5000))
第一个删除给定范围之外的所有数据点,第二个仅调整可见区域。在大多数情况下,您不会看到差异,但如果您对数据适用任何内容,则可能会更改拟合值。
您还可以使用速记函数xlim
(或ylim
),这与第一个选项一样,删除了给定范围之外的数据点:
+ xlim(-5000, 5000)
有关详细信息,请查看coord_cartesian
。
ggplot2
的{{3}}使视觉上非常清晰。以下是该备忘单的一小部分:
答案 1 :(得分:33)
快速注意:如果您还使用coord_flip()
翻转x和y轴,则无法使用coord_cartesian()
设置范围限制,因为这两个函数是独占的(请参阅here)。
幸运的是,这是一个简单的解决方案;将您的限制设置为coord_flip()
,如下所示:
p + coord_flip(ylim = c(3,5), xlim = c(100, 400))
这只会改变可见范围(即不会删除数据点)。