Преобразуйте числа с показателями в команды 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 для более подробного объяснения того, как это работает.

Другие вопросы по тегам