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

标签 r plot legend

我在 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/

相关文章:

r - 了解函数端点

python - Matplotlib 绘图生成器

python-3.x - 如何删除图例的特定部分(seaborn,散点图)

r - 在 ggplot 中使用 geom_vline() 复制图例

r - 使用 R 连接到远程 SQL Server

R lubridate 查找连续时间范围和一组间隔之间的非重叠时间段

javascript - 更改 R DT 数据表中控件的颜色

python - 同一张图上的 Matplotlib 极轴和笛卡尔轴

python - 在 GUI 嵌入图中使用 matplotlib Cursor 小部件

r - ggplot : how to get legend linetype group-dependent while errorbar linetype solid