R中的上标图例文本
Posted
技术标签:
【中文标题】R中的上标图例文本【英文标题】:Superscript Legend Text in R 【发布时间】:2020-04-02 17:39:24 【问题描述】:我目前正在尝试在 R 中添加类似于 Latex 的图例文本。我有诸如"xx", "xxx", "yy", and "zz"
之类的变量,我想知道是否可以将这些变量自动转换为上标,例如Latex 中的$x^2$
。我知道 ggplot 的 expression(paste0("x"^"2"))
,但不清楚如何实现它或自动更改文本。
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】:你仍然必须使用 expression()
编辑:您可以使用 rlang 的 parse_exprs() 和 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"))
【讨论】:
是否可以应用循环或不同的函数来自动将expression(paste())
用于熔化数据名或原始数据帧中的变量?
当然,为什么不呢,可能是 lapply( vector, paste ) 和另一个 lapply( vector, expression
该方法似乎为每个变量提供了输出expression(X[[i]], ...)
。我试过as.expression
但这似乎并不能提供我想要的东西。最终, as.expression 给出了 expression("xx")
这不是我想要的,并且引号需要删除。
我正在尝试一个 for 循环,但表达式没有按预期运行
好的,我点了它并更新了答案,我希望它清楚,否则请随时回来以上是关于R中的上标图例文本的主要内容,如果未能解决你的问题,请参考以下文章
如何理解哪个图例是哪个图例并在 R 的 ggplot 中删除其中一个?