ggplot2坐标轴 - 如何在ggplot2 R图中设置轴限制?





r坐标轴标签 y轴范围 (3)


基本上你有两种选择

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

要么

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

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

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

+ xlim(-5000, 5000)

有关更多信息,请查看coord_cartesian的描述。

用于ggplot2RStudio cheatsheet使这在视觉上非常清晰。 以下是该小组的一小部分:

CC BY下分发

我绘制以下内容:

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之间的区域,而不是整个范围。

我怎样才能做到这一点?




快速提示:如果您还使用coord_flip()翻转x轴和y轴,则无法使用coord_cartesian()设置范围限制,因为这两个函数是独占的(请参见here )。

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

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

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




这是一个非常非常粗糙的开始,仅涵盖(部分)线条的手绘外观。 这需要一点点工作来自动化,但在响应函数中添加一些AR(1)噪声可能会使其看起来略微手工绘制

set.seed(551)
x <- seq(0, 1, length.out = 1000)
y <- sin(x)

imperfect <- arima.sim(n = length(y), model = list(ar = c(.9999)))
imperfect <- scale(imperfect)
z <- y + imperfect*.005
plot(x, z, type = "l", col = "blue", lwd = 2)






r plot ggplot2