如何使用coord_fixed与scale_x_continuous而不会丢失其中一个或另一个的功能

时间:2018-03-19 12:35:36

标签: r ggplot2

我正在尝试使用scale_x_continuous(),scale_y_continuous()和coord_fixed()以及coord_cartesian()创建绘图。然而,似乎总是覆盖另一个(s)。

考虑数据框:

x<- as.vector(sample(250:500, 50))
y<- as.vector(sample(1:500, 50))
df<- as.data.frame(cbind(x,y))

我需要将x和y轴的比例设置为1:1的比例。这很容易实现:

p <-ggplot() + geom_point(data = df, aes(x = x, y = y))

p <- p + scale_x_continuous(limits = c(0,500)) + scale_y_continuous(limits = c(0,500))
p <- p + coord_fixed()
p

现在我要删除绘图左侧的所有空白区域。对我来说,合乎逻辑的步骤是使用coord_cartesian()来&#34;缩放&#34;进入我的情节而不改变它,但它不起作用。

p <- p + coord_cartesian(xlim = c(250, 500), ylim = c(0,500)) 
p

这行代码会让我放大,但现在coord_fixed()的效果消失了。 (当您更改绘图的边距并且轴间距的比率也发生变化时,可以看到这种情况。)

我已经在所有这三个函数中尝试了多次设置限制的迭代,并且还删除和/或重新排序这些函数,并且它们似乎总是在某一点上相互抵消。即使在coord_fixed()中设置xlim和ylim也会阻止它工作。

p <-ggplot() + geom_point(data = df, aes(x= x, y = y))

p <- p + scale_x_continuous(limits = c(0,500)) + scale_y_continuous(limits = c(0,500))
p <- p + coord_fixed(ratio=1, xlim = c(250, 500), ylim = c(0,500))
p

如何保持我的轴之间的比例固定为1:1,同时删除图表左侧的空白区域?

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用coord_fixed,并设置比率以匹配两个轴的限制之间的比率:

xlim = c(245, 505) 
ylim = c(-5,505)
p + coord_fixed(ratio = diff(xlim)/diff(ylim), xlim=xlim, ylim=ylim, expand=F)

enter image description here