我正在尝试使用以下标签标记图:
“一些分析EC50(uM)”,其中“u”是微符号。
我目前有:
assay <- "Some Assay"
plot(0,xlab=expression(paste(assay," AC50 (",mu,"M)",sep="")))
但是这给出了:“测定EC50(uM)”而不是所需的“某些测定EC50(uM)”。
连连呢?感谢。
我也尝试过:
paste(assay,expression(paste(" AC50 (",mu,"M)",sep="")),sep="")
答案 0 :(得分:40)
你想要bquote()
和一些plotmath fu的组合:
assay <- "Some Assay"
xlab <- bquote(.(assay) ~ AC50 ~ (mu*M))
plot(0, xlab = xlab)
~
是间距运算符,*
表示将内容并置到运算符的左侧和右侧。在bquote()
中,.( )
中包含的任何内容都将被查找并替换为命名对象的值;因此,.(assay)
将在Some Assay
的表达式中替换。
答案 1 :(得分:3)
你也可以尝试穷人的做法:
assay <- "Some Assay"
plot(0, xlab = paste0(assay, " AC50 (µM)"))
它直接指定mu字符而不是使用表达式(而paste0
仅paste
与sep = ""
)。
答案 2 :(得分:3)
使用mtext
和bquote
plot(0,xlab='')
Lines <- list(bquote(paste(assay," AC50 (",mu,"M)",sep="")))
mtext(do.call(expression, Lines),side=1,line=3)
请注意,我在第一个图中将xlab设置为null。
修改强> 无需调用表达式,因为bquote将创建一个表达式,用它们的值替换。()中包含的元素。所以好消息是:
plot(0,xlab='')
Lines <- bquote(paste(.(assay)," AC50 (",mu,"M)",sep=""))
mtext(Lines,side=1,line=3)
答案 3 :(得分:1)
您可以使用tidy_eval方法
library(rlang)
assay <- "Some Assay"
plot(0,xlab=expr(paste(!!assay," AC50 (",mu,"M)",sep="")))
expr和!!包含在tidyverse中,因此您实际上不需要加载rlang。我只是说清楚它们的来源。