强制原点从0开始


Answers:


199

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 = 5和处的点)y = 5


29
我还需要指定限制:scale_x_continuous(expand = c(0, 0), limits = c(0,5)),不知何故没有它没有工作
JelenaČuklina

3
我认为另外一块可能会有所帮助,它使用类似的方法,expand=expand_scale(mult=c(0,0.1))因此您仍然可以在较高端进行填充:stackoverflow.com/a/59056123/8400969
Michael

4

只需将这些添加到您的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))

在此处输入图片说明

最后,需要极大的小心,不要无意中排除数据从图表。例如,a position = 'dodge'可能导致条形图完全离开图表(例如,如果其值为零,并且您将轴从零开始),那么您可能看不到它,甚至可能不知道它在那里。我建议先完整地绘制数据,检查,然后使用以上技巧来改善绘图的美观性。


是否有可能将其构建为新的ggplot主题?
鲍尔

@Bolle我不确定,但也有兴趣查找,您可以作为一个单独的问题提问并链接到此处
stevec

链接在这里以供将来参考
stevec
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.