【问题标题】:Push plot legend up slightly in R在 R 中将情节图例略微向上推
【发布时间】:2012-12-18 01:49:55
【问题描述】:

我有一个用 R 创建的 ECDF 图,它的右下角有一个图例。我遇到的问题是 ECDF 图放置在 0.0 处的微弱灰色虚线水平线与我图例中的最后一项重叠。像这样:

目前我正在创建传奇:

legend("bottomright",c("Original","Minus 30 minutes"),col=c("black","red"),lty=c("dashed","dotted"))

有没有办法简单地将图例向上推一点以避免重叠问题?理想的解决方案是以编程方式检测重叠并对其进行适当校正的解决方案,但如果做不到这一点,一些凭经验确定的像素偏移量可能就足够了。

【问题讨论】:

    标签: r plot legend


    【解决方案1】:

    您可能希望在调用 legend 时使用 inset=c(0,.01)(或其他值)

    【讨论】:

    • .05 或更大的y 坐标inset 可能更合适,但这是正确的想法。
    【解决方案2】:
    legend(x=1e+04, y=0.2, c("Original","Minus 30 minutes"), 
                           col=c("black","red"), 
                           lty=c("dashed","dotted"))
    

    【讨论】:

      【解决方案3】:

      顺便说一句,legend 函数还有一个简洁的trace= 选项,您可以使用它来记录创建图例的确切规范。您可以将此数据保存到对象中,并使用它来更正自动格式化的图例。对于您当前的场景来说,这可能有点矫枉过正,但它是一个非常简洁的小系统。

      例如:

      # plot a test plot
      > plot(1:10)
      
      # calculate the details for a legend in the bottomright, save the data
      # and don't add the legend itself
      > legdata <- legend("bottomright","boom",trace=TRUE,plot=FALSE)
      
      > legdata
      $rect
      $rect$w
      [1] 1.454288
      
      $rect$h
      [1] 1.65623
      
      $rect$left
      [1] 8.905712
      
      $rect$top
      [1] 2.29623
      
      
      $text
      $text$x
      [1] 9.456811
      
      $text$y
      [1] 1.468115
      
      # re-use the saved legend data to push the legend up slightly
      > legend(list(x=legdata$rect$left,y=legdata$rect$top+0.5),"boom")
      

      【讨论】:

        猜你喜欢
        • 2017-02-09
        • 2013-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多