【问题标题】:ggplot2 geom_rug rescales unused axes - how do I stop this?ggplot2 geom_rug 重新调整未使用的轴 - 我该如何阻止它?
【发布时间】:2013-02-28 14:23:49
【问题描述】:

我正在绘制一条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')

y 轴现在放大到 5,即使没有在 3 以上绘制任何内容。

我知道我可以手动调整轴刻度,但我希望能够为大量变量动态地执行此操作,而且这种行为似乎不正确。因此,我假设我使用不正确。我有什么遗漏吗?

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    由于克拉值最大为 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()
    

    您可以使用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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      相关资源
      最近更新 更多