gpt4 book ai didi

r - 在 R 中,如何将表达式与图例标签中两行的字符串组合在一起?

转载 作者:行者123 更新时间:2023-12-04 05:21:16 25 4
gpt4 key购买 nike

我想在同一图上绘制由两种方法 m1 和 m2 返回的结果。在我的特殊情况下,第一种方法的标签是一个表达式(因为它有下标),而第二种方法的标签是两行(因为它很长)。但是,满足这两个要求不起作用:

l <- list("m1"=list(data=1:10, col=2, label=expression(paste("method 1 (", X[a], ")"))))
l[["m2"]] <- list(data=rep(3,10), col=3, label="method 2 (with a\nlong explanation)")
plot(l[["m1"]]$data, col=l[["m1"]]$col); points(l[["m2"]]$data, col=l[["m2"]]$col)
legend("topleft", legend=c(l[["m1"]]$label, l[["m2"]]$label), col=c(l[["m1"]]$col, l[["m2"]]$col), pch=1)

正如您在图例中看到的,第二个标签(两行的那个)与第一个标签重叠。

当我不对第一个标签使用表达式时,问题就消失了:
legend("topleft", legend=c("method 1 (Xa)", l[["m2"]]$label), col=c(l[["m1"]]$col, l[["m2"]]$col), pch=1)

当第二个标签位于一行时,问题也会消失:
legend("topleft", legend=c(l[["m1"]]$label, "method 2 (with a long explanation)"), col=c(l[["m1"]]$col, l[["m2"]]$col), pch=1)

但是,我真的需要表达式和两行。有什么想法吗?

ps:我在 Lubuntu 上使用 R 2.14.1。

最佳答案

你可以玩 y.intersep cex 参数。

legend("topleft", 
legend=c(l[["m1"]]$label,
l[["m2"]]$label),
col=c(l[["m1"]]$col,l[["m2"]]$col),
pch=0.5,title.adj=100,cex=0.8,y.intersp=2
)

enter image description here

关于r - 在 R 中,如何将表达式与图例标签中两行的字符串组合在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13665601/

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