【问题标题】:set only lower bound of a limit for ggplot仅设置 ggplot 限制的下限
【发布时间】:2012-06-26 18:46:04
【问题描述】:

是否可以只设置连续缩放限制的下限?我想让我的所有地块都以 0 为基础,而无需指定上限。

例如

+ scale_y_continuous(minlim=0)

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    你可以使用expand_limits

    ggplot(mtcars, aes(wt, mpg)) + geom_point() + expand_limits(y=0)
    

    这是两者的比较:

    • 没有expand_limits

    • expand_limits

    ggplot2 的 1.0.0 版开始,您可以只指定一个限制,而另一个限制则与通常通过将第二个限制设置为 NA 来确定一样。这种方法将允许扩展和截断轴范围。

    ggplot(mtcars, aes(wt, mpg)) + geom_point() +
      scale_y_continuous(limits = c(0, NA))
    

    通过ylim(c(0, NA)) 指定它会得到一个相同的数字。

    【讨论】:

    【解决方案2】:

    aes(ymin=0)怎么样,如:

    ggplot(mtcars, aes(wt, mpg)) + geom_point() + aes(ymin=0)
    

    【讨论】:

    • 这会覆盖 geom_errorbar 等的 ymin; expand_limits() 似乎更安全。
    • 这不是通用的,至于geom_density,它给了我Error: stat_bin() must not be used with a y aesthetic,或者当放在geom_densityWarning: Ignoring unknown aesthetics: ymin 中时(后者完全可以预期)
    【解决方案3】:

    你也可以试试下面的代码,它会让你的最小 y 轴为零,并且 x 轴和最小 y 值之间没有额外的间隙。

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

    【讨论】:

    • 有没有办法用coord_cartesian() 代替?
    【解决方案4】:

    我认为您不能直接执行此操作。但作为一种解决方法,您可以模仿 ggplot2 确定上限的方式:

    scale_y_continuous(limits=c(0, max(mydata$y) * 1.1))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-30
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多