R 如何在带有面的ggplot2中仅为轴设置一个限制?

R 如何在带有面的ggplot2中仅为轴设置一个限制?,r,ggplot2,R,Ggplot2,这个问题类似于这个问题:,不同的是我只想限制一侧(例如,只绘制x>0而不是-5000

这个问题类似于这个问题:,不同的是我只想限制一侧(例如,只绘制x>0而不是-5000facets

注意,我想知道这两种简单情况的解决方案:

  • scale\u x\u continuous(limits=c(-5000,5000))
    (与
    xlim(-5000,5000)
    相同)-它完全不考虑点(例如,它们不会用于
    geom\u smooth())

  • coord\u笛卡尔(xlim=c(-50005000))
    函数-它只是不绘制它们(但仍用于
    geom\u smooth())

  • 这种情况经常发生在您使用
    facet\u wrap(~veg,scales=“free\u x)
    时,您不知道每个facet的x上限是多少,但您知道它们总是正值。

    您可以尝试

    scale_x_连续(极限=c(0,最大(x)))
    

    这会将下限设置为零,将上限设置为数据的最大值。这就是您要寻找的吗?

    将限制设置为NA的一侧。在
    coord\u
    scale\u
    功能中都有效

    我通常更喜欢coord_uu,因为它不会删除数据。对于下面的示例,您还需要删除0处的边距,例如使用expand

    库(ggplot2)
    
    胡萝卜你应该包括一个例子,假设不同的方面应该以不同的最大值结束(否则它是微不足道的)。这对coord和scales功能都有效。这是否回答了您的问题?最简单的答案已经在上面的评论中:@Tjebo,您应该发布它。它像一个符咒一样工作。@chemdork123干杯。回答补充这是我最终使用的facets。谢谢!我收到消息“未找到对象x”。有没有办法避免使用max(数据$var)实际上使用x?
    ggplot(vegLengths, aes(length, fill = veg)) +
      geom_density(alpha = 0.2) +
      scale_x_continuous(expand = expansion(mult = c(0, 0.05))) +
      coord_cartesian(xlim = c(0, NA))