ggplot2 geom_rug重新缩放未使用的轴 - 如何阻止它?

时间:2013-02-28 02:51:23

标签: r ggplot2

我正在绘制一条geom_smooth线,并想添加一块地毯。 y变化远大于平均值,因此当仅绘制平滑线时,y尺度从实际数据范围减小。当我在底部添加一个地毯时,它会重新调整y轴,就好像y轴上还有一个地毯一样,这使得很难看到平滑线的关系。

示例:

ggplot(diamonds, aes(y=carat, x=price, color=cut)) + 
    geom_smooth(se=F, method='lm')

以上将y轴缩放到约0到3的范围。

仅将地毯添加到底部:

ggplot(diamonds, aes(y=carat, x=price, color=cut)) + 
        geom_smooth(se=F, method='lm') + geom_rug(sides='b')

即使没有在3以上绘制任何内容,y轴现在也会扩展到5。

我知道我可以手动调整轴刻度,但我希望能够动态地为大量变量执行此操作,并且看起来这种行为是不正确的。因此,我假设我使用不正确。有什么我想念的吗?

1 个答案:

答案 0 :(得分:2)

由于克拉值最多为5,您会得到y轴的奇怪的行为。使用geom_point()可以看出这一点。当您使用geom_rug()时,它会查看所有点并为每个实际值绘制地毯。 sided="b"的设置只是在y侧隐藏地毯,但是那边用于地毯的空间保持不变。

ggplot(diamonds, aes(y=carat, x=price, color=cut)) + 
  geom_point() + geom_smooth(se=F, method='lm') + geom_rug()

enter image description here

您可以使用coord_cartesian()并设置参数ylim=将y轴缩放到所需的限制。

ggplot(diamonds, aes(y=carat, x=price, color=cut)) + 
  geom_smooth(se=F, method='lm') + geom_rug(sides='b')+
   coord_cartesian(ylim=c(0,3))