【问题标题】:Linebreak in R plot legend behaviorR情节图例行为中的换行符
【发布时间】:2012-11-22 15:42:14
【问题描述】:

我在 R 的图例中有一个换行符,我的问题是图形看起来不像预期的那样。 我的最小示例如下:

plot(1)
legendLabel<-c("t\nu ","tu","wh","trr\nni")
legend("top",legend=legendLabel,horiz=TRUE,fill=c("red","blue","gray","black"))

我希望图例的上下边距相等,但事实并非如此。

正如您在附图中看到的那样,下边距比上边距小。

有没有人知道如何解决它或者谁能告诉我问题是什么?

谢谢。

【问题讨论】:

  • 我也放弃了。您可能希望删除带有bty="n" 的框并添加polygonafterwards。

标签: r plot legend


【解决方案1】:

好的,我相信我有适合您的解决方案。我将图例位置的信息保存在一个名为ld 的对象中,然后根据这些坐标创建一个polygon。理解起来有点棘手,但我基本上是将多边形扩展了几个点大小的长度。为了做到这一点,我必须首先使用par()$cin 获取以英寸为单位的字符大小,并将点大小转换为这些尺寸(除以 72 并乘以par()$ps。然后,通过缩放将其转换为绘图的单位使用par()$usr 以单位获得字符宽度(我认为这是正确的 - 无论如何它都有效!)我在ld坐标的左侧添加了3个这些单位,右侧添加了2个,向上添加了1个和1下面是结果和代码:

plot(1)
legendLabel<-c("t\nu ","tu","wh","trr\nni")
ld <- legend("top",legend=legendLabel,horiz=TRUE,fill=c("red","blue","gray","black"), bty="n")

CIN <- par()$cin
PS <- par()$ps
USR <- par()$usr
CIN.USR <- c((CIN[1]/72*PS)/(USR[2]-USR[1]), (CIN[2]/72*PS)/(USR[4]-USR[3]))

xs <- c(ld$text$x[1], ld$text$x[1], ld$text$x[length(ld$text$x)], ld$text$x[length(ld$text$x)])
ys <- c(ld$text$y[1], ld$text$y[1], ld$text$y[length(ld$text$x)], ld$text$y[length(ld$text$x)])

polygon(
x = xs + c(-3*CIN.USR[1], -3*CIN.USR[1], 2*CIN.USR[1], 2*CIN.USR[1]), 
y = ys+c(-1*CIN.USR[2], 1*CIN.USR[2], 1*CIN.USR[2], -1*CIN.USR[2])
)

【讨论】:

  • 感谢您的回答,根据您的回答,我为我找到了一个可行的解决方案。你的问题是我使用barplot(matrix(data, nr=6), names.arg=name,beside=FALSE,xlim=range(0,100),ylim=range(0,12),horiz=TRUE) 而你的代码只画了一条实线。
【解决方案2】:

感谢@'Marc in the box',我找到了一个很好的解决方案。 按照他用bty="n" 告诉的方式禁用该框,然后

  ld<-legend("top",legend=legendLabel, cex=0.65, fill=colorNames, horiz=TRUE,bty="n")
  height<-(ld$rect$top-ld$text$y[1])*2
  xs <- c(ld$rect$left, ld$rect$left, ld$rect$left+ld$rect$w, ld$rect$left+ld$rect$w)
  ys <- c(ld$rect$top, ld$rect$top-height, ld$rect$top-height, ld$rect$top)
  polygon(x = xs , y = ys)

所以我首先计算了顶角和 dataPoint 之间的距离,然后用这些信息绘制了一个多边形。 就我所见,作品相当普遍。

谢谢。

【讨论】:

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