Преобразуйте числа с показателями в команды plotmath для красивых легенд в R
Я пытаюсь создать красивую легенду в R сюжетах. у меня есть factor=1e-5
, который должен быть красиво отформатирован в легенде. Я нашел хорошую функцию в пакете sfsmisc
, который преобразует числа в выражения. Чтобы добавить это выражение в мою команду bquote, мне кажется, что мне нужно преобразовать его в вызов. к сожалению, в конце строки добавлены фигурные скобки (10^-5()
).
Есть ли способ избежать добавления этих скоб? Или есть даже более простой способ преобразования чисел в команды plotmaths для их использования в легендах? (не делая это вручную)
factor = 1e-5
alpha = 1:10
omega = alpha^2 * factor
plot (
alpha
, omega
, xlab=bquote(alpha)
, ylab=bquote(omega)
, type="b"
)
text = expression()
# standard version
text[1] = as.expression(bquote(alpha%*%.(factor)))
# beautified version (use pretty10exp from sfsmisc package!?)
library("sfsmisc")
pretty = as.call(pretty10exp(factor, drop.1=T))
text[1] = as.expression(bquote(alpha^2%*%.(pretty)))
# add legend
legend("topleft", legend=text, pch=1, lty=1)
1 ответ
Решение
Вот что вы можете сделать вместо этого с помощью функции parse
:
text <- paste("alpha^2%*%",parse(text=pretty10exp(factor,drop.1=T)),sep="")
text
[1] "alpha^2%*%10^-5" # which we then use as the expression in your call to legend
legend("topleft", legend=parse(text=text), pch=1, lty=1)
Увидеть ?parse
для более подробного объяснения того, как это работает.