【问题标题】:Is it possible to change the ylim and xlim when the plot has already been drawn?绘制绘图时是否可以更改 ylim 和 xlim ?
【发布时间】:2012-05-04 13:52:54
【问题描述】:

例如,如果我想用点 1-5 绘制一个图并添加点 5-9,则可以使用以下方法:

plot(c(1,2,3,4,5), ylim=c(0,10))
points(c(5,6,7,8,9))

但是,如果我事先不知道要添加的点数是多少(可能是 5-9,也可能是 20-29),我无法事先设置 ylim 和 xlim。我希望能够执行以下操作(不起作用):

plot(c(1,2,3,4,5))
points(c(5,6,7,8,9), ylim=c(0,10)) 

这样的事情可能吗?

【问题讨论】:

  • 我会指出,下面给出的 ggplot2 解决方案 在技术上 不满足 OP 的问题,因为您仍然需要重新渲染图表 from从头开始 以查看更改。这与基础图形中的情况相同,您需要从头开始构建图形以更改轴限制。所以@BenBolker 的回答可能是最正确的。
  • 这就是我接受他的回答的原因

标签: r plot limit


【解决方案1】:

(仅出于完整性考虑。)

这在 R 基础图形中几乎肯定是不可能的。其他答案指出它在ggplot 中是可行的。 可能在类似playwith 包的东西中是可能的,尽管短暂的玩耍并没有告诉我一个方法。

【讨论】:

    【解决方案2】:

    您可以在 ggplot2 中更改坐标轴范围。例如,

    require(ggplot2)
    data(mpg) 
    
    g = ggplot(mpg, aes(cyl, cty)) + geom_point() + xlim(5, 8)
    g
    g + xlim(4,8)
    

    正如 Ben Bolker 所提到的,在基本图形中,如果没有额外的软件包,你肯定无法做到。

    【讨论】:

      【解决方案3】:

      ggplot2可以修改坐标轴:

      df <-data.frame(age=c(10,10,20,20,25,25,25),veg=c(0,1,0,1,1,0,1),extra=c(10,10,20,20,25,25,90))
       g=ggplot(data=df,aes(x=age,y=veg))
       g=g+stat_summary(fun.y=mean,geom="point")
       g
      

      然后

      a<-g+coord_cartesian(xlim=c(0,100))
      a+geom_point(data=df,aes(x=extra,y=veg))
      

      【讨论】:

        【解决方案4】:

        这样就够了吗?它将 ylim 的上限视为变量,但从技术上讲,在添加点之前您会知道 ylim:

        my.data <- seq(0,5)
        my.points <- seq(5,9)
        plot(my.data, ylim=c(0,max(my.data,my.points)))
        points(my.points)
        

        你也可以用同样的方式处理 ylim 的下界:

        my.data <- seq(0,5)
        my.points <- seq(5,9)
        plot(my.data, ylim=c(min(my.data,my.points),max(my.data,my.points)))
        points(my.points)
        

        【讨论】:

          猜你喜欢
          • 2012-07-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-28
          • 1970-01-01
          相关资源
          最近更新 更多