如何从ggplot中原点的第一个轴刻度开始

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从ggplot中原点的第一个轴刻度开始相关的知识,希望对你有一定的参考价值。

我想始终从原点的第一个轴刻度开始,例如在此图像中:

enter image description here

xlimexpand_limitsscale_x_continuous并不真正起作用 - 第一轴刻度和原点之间总是有一点间距。应该有一个简单的方法来做到这一点。提前谢谢了。

答案

不幸的是,ggplot2被设置为扩展轴并因此填充轴刻度,并且没有简单的功能来强制它们在原点处齐平。我发现在原点获得轴刻度的最佳方法是使用coord_cartesian()关闭轴扩展并手动指定限制

require(ggplot2)

ggplot(mtcars, aes(wt, mpg)) +
  geom_point() +
  theme_classic() +
  coord_cartesian(expand = FALSE, #turn off axis expansion (padding)
                  xlim = c(1, 6), ylim = c(10, 35)) #manually set limits

我更喜欢在coord_cartesian()而不是在scale_y_...()scale_x_...()中定义限制,因为coord_cartesian()会查看视图,但不会改变基础数据。 scale...()函数删除超出限制的数据,如果你裁掉异常值,可能会弄乱拟合线(stat_smooth())或汇总统计数据。

enter image description here

另一答案

对我有用的解决方案是将选项expand=c(0,0)与limits选项一起设置,例如:

  scale_y_continuous(expand = c(0, 0), limits = c(10,NA))

然后Y轴从原点开始,第一个标记为10

以上是关于如何从ggplot中原点的第一个轴刻度开始的主要内容,如果未能解决你的问题,请参考以下文章

如何分别格式化每个 ggplot 面板的轴刻度标签?

如何在 R 中使用 ggplot2 绘制的绘图的 y 轴刻度中准确显示数字的 SI 前缀?

在ggplot2中制作没有轴编号/刻度的饼图

如何掌握ggplot中的x轴中断?

使用ggplot2更改R中的x轴刻度标签[重复]

ggplot2中同一轴上的不同刻度长度