在矩阵内使用 expression() 在 R 中创建图例

问题描述 投票:0回答:1

在我正在运行的实验中,图例的创建如下:

eigenvalues <- t(c(1,2))
plot(1)
# Legend
legend_text <- cbind(
  paste("λ1 =", eigenvalues[, 1]),
  paste("λ2 =", eigenvalues[, 2])
)
legend("topright", legend = legend_text, text.col = "black", bty = "n", cex = 1)

enter image description here

但是,我想使用

"λ1 ="
而不是
lambda[1]
,但是当我使用它时,出现以下错误:

legend_text <- cbind(
  expression(lambda[1] == eigenvalues[, 1]),
  expression(lambda[2] == eigenvalues[, 2])
)

Error in cbind(expression(lambda[1] == eigenvalues[, 1]), expression(lambda[2] ==  : 
  cannot create a matrix from type 'expression'

如何使用

expression(lambda[1]
作为图例而不收到错误消息?

r expression legend cbind
1个回答
0
投票

为了使用plotmath解析,您需要提供表达式:

legend_text <- lapply(1:2, \(j) bquote(lambda[.(i)] == .(e), 
                                       list(i = j, e = eigenvalues[, j])))
© www.soinside.com 2019 - 2024. All rights reserved.