Надстрочный текст легенды в R - PullRequest
1 голос
/ 02 апреля 2020

В настоящее время я пытаюсь надписать текст легенды в R аналогично латексу. У меня есть переменные, такие как "xx", "xxx", "yy", and "zz", и мне интересно, можно ли автоматически преобразовать их в верхние индексы, такие как $x^2$ в латексе. Я знаю о expression(paste0("x"^"2")) для ggplot, но неясно, как это реализовать или изменить текст автоматически.

matrix <- matrix(rexp(200, rate=.1), ncol=20)
df <- data.frame(matrix)
variables <- c("x","y","z","xx","xy","yy","xz","yz","zz","xxx")

df$variables <- variables

new.df <- melt(df, id.vars="variables")

ggplot(new.df, aes(x = variable, y = value, col=variables, group = variables))+
  geom_point()+
  geom_line()

1 Ответ

1 голос
/ 02 апреля 2020

enter image description here Вы все еще должны использовать выражение ()

РЕДАКТИРОВАТЬ: вы можете использовать parse_exprs () rlang с eval для автоматического преобразования ваших переменных в выражение:



#variables_ex <- rep(expression(paste(x^x[y])),10)
##EDIT: universal solution:

library(rlang)

variables <- c("x","y","z","xx","xy","yy","xz","yz","zz","xxx")

exlabel<-paste(variables,"^x[y]",sep="")


ggplot(new.df, aes(x = variable, y = value, col=variables, group = variables))+
  geom_point()+
  geom_line()+ labs(x = variables_ex)+
  scale_color_discrete(name = "Superlegend", labels= eval(parse_exprs(exlabel)))+
  theme( legend.text = element_text(color = "red"))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...