【问题标题】:Grid line consistent with ticks on axis网格线与轴上的刻度一致
【发布时间】:2011-11-10 15:26:57
【问题描述】:

我不好意思问这个简单的问题,但每当我创建一个情节时,我都会想好几天:

plot (x = 1:10, y = rnorm (10, 5, 2))
grid (10,10, lty = 6, col = "cornsilk2")

我想将网格放置在标记轴的位置,即 x 轴上的 2、4、6、8、10 和 y 轴上的 3、4、5、6、7、8 处。

我想自动化该过程,因为只要绘图大小发生更改,默认标签行为就会发生更改。见下图:

【问题讨论】:

    标签: r graph gridlines


    【解决方案1】:

    来自?gridnxny 参数的描述:

    当为 NULL 时,默认情况下,网格与 对应的默认轴(即,由 axTicks 计算的刻度线)

    plot (x = 1:10, y = rnorm (10, 5, 2)) 
    grid (NULL,NULL, lty = 6, col = "cornsilk2") 
    

    【讨论】:

    • +1 用于解释帮助文件,-1 用于我自己不理解帮助...
    • 这似乎不适用于 X 轴上的时间戳。有什么想法吗?
    • @slovon 我认为在这种情况下您将不得不手动绘制网格。 grid 的文档只说它将与“默认”轴的刻度对齐,并且显然 datetime plot 方法所做的事情与 axTicks 返回的不同。
    • @slovon 如果有帮助,我认为刻度线位置来自graphics:::axis.POSIXct
    【解决方案2】:

    作为参考,如果我们没有定义自定义刻度间隔,有一种方法可以直接从 plot() 命令控制网格和轴参数:

    plot(x = 1:10, y = rnorm(10, 5, 2), xlim=c(1, 10), ylim=c(1, 10), panel.first=grid())
    

    plot.default() 文档提供了有关这些参数的更多信息。

    使用自定义刻度间隔时,最简单的方法是使用 abline 绘制网格:

    plot(x = 1:10, y = rnorm(10, 5, 2), xaxp=c(1, 10, 10), yaxp=c(1, 10, 10), axes=FALSE)
    axis(1, 1:10)
    axis(2, 1:10)
    abline(h=1:10, v=1:10, col="gray", lty=3)
    

    有关this threadhere 中用于网格对齐的自定义刻度间隔的更多信息。

    【讨论】:

      【解决方案3】:

      对于后人来说,这是手动操作的冗长方式:

      plot (x = 1:10, y = rnorm (10, 5, 2))
      grid (lty = 6, col = "cornsilk2")
      
      xaxp <- par("xaxp")
      yaxp <- par("yaxp")
      
      abline(v=seq(xaxp[1], xaxp[2], (xaxp[2]-xaxp[1])/xaxp[3]), lty=6, col = "cornsilk2")
      abline(h=seq(yaxp[1], yaxp[2], (yaxp[2]-yaxp[1])/yaxp[3]), lty=6, col = "cornsilk2")
      

      【讨论】:

        【解决方案4】:

        here 提供的答案要简单得多,尽管您可能不喜欢轴两端缺少“可用空间”。简而言之,

        问题是 grid 将 nx 网格线放在用户空间中, 但情节在每边增加了 4% 的额外空间。你可以控制 这个的。将xaxs="i", yaxs="i" 添加到您的情节将关闭 额外的空间。但是你的右上角会被切断,所以你 需要更改 xlim 和 ylim 值并更改 nx 以匹配

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-06-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-03
          • 2011-03-29
          • 2012-07-09
          • 1970-01-01
          相关资源
          最近更新 更多