2013-02-28 47 views
1

我正在绘制geom_smooth行,并且想添加地毯。 y变异性比平均值大得多,所以当仅绘制平滑线时,y尺度从实际数据范围减小。当我在底部添加一块地毯时,它会重新调整y轴,就好像y轴上有地毯一样,从而很难看清平滑线的关系。ggplot2 geom_rug rescales未使用的轴 - 我该如何阻止?

实施例:

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') 

的Y轴现在被放大到5,即使上面没有绘制任何东西3.

我知道我可以调整t他轴手动缩放,但我希望能够为大量的变量动态地做到这一点,而且似乎这种行为是不正确的。因此,我认为我错误地使用了它。有什么我失踪?

回答

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

可以放大Y轴到期望的限度与coord_cartesian()和设置参数ylim=

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)) 
相关问题