gpt4 book ai didi

r - R 绘图图例行为中的换行

转载 作者:行者123 更新时间:2023-12-02 00:04:16 41 4
gpt4 key购买 nike

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

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

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

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

有人知道如何解决它或者有人可以告诉我问题是什么吗?

谢谢。

最佳答案

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

enter image description here

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])
)

关于r - R 绘图图例行为中的换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13516070/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com