179

如何在ggplot2中设置y轴和x轴的原点/截距?

x 轴的线应该正好在y=Z

具有Z=0或其他给定值。

4

3 回答 3

239

xlimylim不要在这里剪。您需要使用expand_limitsscale_x_continuousscale_y_continuous。尝试:

df <- data.frame(x = 1:5, y = 1:5)
p <- ggplot(df, aes(x, y)) + geom_point()
p <- p + expand_limits(x = 0, y = 0)
p # not what you are looking for

在此处输入图像描述

p + scale_x_continuous(expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0))

在此处输入图像描述

您可能需要稍作调整以确保点不会被截断(例如,请参见 和 处的x = 5y = 5

于 2012-12-04T11:20:18.537 回答
23

只需将这些添加到您的 ggplot 中:

+ scale_x_continuous(expand = c(0, 0), limits = c(0, NA)) + 
  scale_y_continuous(expand = c(0, 0), limits = c(0, NA))

例子

df <- data.frame(x = 1:5, y = 1:5)
p <- ggplot(df, aes(x, y)) + geom_point()
p <- p + expand_limits(x = 0, y = 0)
p # not what you are looking for


p + scale_x_continuous(expand = c(0, 0), limits = c(0,NA)) + 
  scale_y_continuous(expand = c(0, 0), limits = c(0, NA))

在此处输入图像描述

最后,请注意不要无意中数据排除在图表之外。例如,aposition = 'dodge'可能会导致条形图完全离开图表(例如,如果它的值为零并且您从零开始轴),因此您可能看不到它,甚至可能不知道它在那里。我建议先完整绘制数据,检查,然后使用上面的提示来提高绘图的美感。

于 2020-04-26T08:33:31.130 回答
4

在最新版本的 ggplot2 中,这可能更容易。

p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point()
p+ geom_point() + scale_x_continuous(expand = expansion(mult = c(0, 0))) + scale_y_continuous(expand = expansion(mult = c(0, 0)))

在此处输入图像描述

有关?expansion()更多详细信息,请参阅。

于 2020-09-02T02:25:37.083 回答