R ggplot轴标签中的下标字母
我正在研究如何在轴标签中有下标字母R ggplot轴标签中的下标字母,r,ggplot2,R,Ggplot2,我正在研究如何在轴标签中有下标字母 dat <- data.frame(x = rnorm(100), y = rnorm(100)) ggplot(dat, aes(x=x,y=y)) + geom_point() + labs(y=expression(Blah[1])) dat <- data.frame(x = rnorm(100), y = rnorm(100)) ggplot(dat, aes(x=x,y=y)) + geom_point() +
dat <- data.frame(x = rnorm(100), y = rnorm(100))
ggplot(dat, aes(x=x,y=y)) +
geom_point() +
labs(y=expression(Blah[1]))
dat <- data.frame(x = rnorm(100), y = rnorm(100))
ggplot(dat, aes(x=x,y=y)) +
geom_point() +
labs(y=expression(Blah[1d]))
想法?好的。我发誓我发布这篇文章并不是为了自己回答,尽管我很快就得到了它(当你问问题时总是这样!) 这是:
ggplot(dat, aes(x=x,y=y)) +
geom_point() +
labs(y=expression(Blah[1][d]))
我认为最好是把答案贴出来,而不是把问题删掉,因为有一天它可能会帮助别人
除此之外,我真正想要的是表达式(粘贴(“Hb”,A[1][c],“(%)”,sep=“”)
我无法理解为什么
paste0()
在这里不起作用。最后一个失败的原因是expression
的参数在R解析器中运行,并且在测试它们是否可能是正确的R语法时返回错误。字符串或标记1d
不是有效的R标记(或符号)。可以将其拆分为有效的R标记,并使用非空格运算符“连接”,也可以反勾选它,或者使用普通引号。我认为两者都比使用粘贴更好:
ggplot(dat, aes(x=x,y=y)) +
geom_point() +
labs(y=expression(Blah[1*d]))
ggplot(dat, aes(x=x,y=y)) +
geom_point() +
labs(y=expression(Blah["1d"]))
R中的标记(或“名称”或“符号”)不应以数字开头。因此,您可以通过引用或使用非空格分隔符(*
运算符)分隔1
和d
来绕过该限制。将纯数字文字与合法的R符号或标记“连接”或“连接”
要取消订阅百分比符号,请执行以下操作:
ggplot(dat, aes(x=x,y=y)) +
geom_point() +
labs(y=expression(Blah[1*d]*"%"))
要在pct标志周围放置括号:
expression(Blah[1*d]*"(%)")
%
字符在R解析中具有特殊意义,因为它表示用户定义的中缀运算符的开始。因此,将其用作文本需要引用它。同样的推理要求引用“for”和“in”,因为它们在R的“保留字”组中。还有其他保留字(但的和
中的是最常让我感到困惑的词。)键入:
另一个“窍门”是在italic()
中的数字周围使用引号,如果您需要斜体字。在该函数中,不带引号的数字不会被斜体化
注意事项:paste
是一个plotmath函数,除了它的语义与base::paste函数不同之外。特别是,它没有“sep”参数。因此,您永远无法在打印的参数之间获得空格,如果您尝试放入非空格项,则在标记为sep=”“
的所有其他参数之后将出现一个实例
paste0
不是plotmath函数,因此不会被解释,而是显示为“未处理”,其未处理的参数在括号内。paste0
不是plotmath函数paste
是一个plotmath函数,只是它的语义不同于base::paste
函数。特别是,它没有'sep'参数。在R表达式中,您需要引用任何特殊字符,如%
,或保留字,如“In”谢谢,DWin,我不知道它被称为令牌。虽然它不在问题中(但在我的答案中),但您能在不粘贴的下标后获得(%)吗?特别感谢非空格分隔符,我已经寻找了一段时间。我一直感到惊讶的是,?plotmath
页面在描述语法要求方面没有做得更好。它只是说,它就像普通的R,但他们真的应该添加一个小段落来扩展它。
expression(Blah[1*d]*"(%)")
?Reserved