我正在尝试找出如何在轴标签中使用下标字母。
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]))
第一个示例仅是一个数字而起作用,只要方括号中有一个字符,它就会失败。Blah [subscript(1d)]本质上是我所需要的,但是我无法弄清楚如何让它在下标中包含字母。我尝试了各种变体,包括paste()
。
以下示例提供了奇怪的行为:
labs(y=expression(Blah[12])) # this works
labs(y=expression(Blah[d])) # this works
labs(y=expression(Blah[d1])) # this works
labs(y=expression(Blah[1d])) # this fails
有什么想法吗?
最后一个失败的原因是表达式的参数通过R解析器运行。字符串或令牌1d
不是有效的R令牌。可以将其包含在有效的R令牌中,并与非空间运算符“连接”,对它进行反选,或使用普通引号。我认为这是比使用更好的方法paste
:
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解析中具有特殊含义,因为它表示用户定义的中缀运算符的开始。因此,将其用作文字需要对其进行引用。同样的道理要求“为”和“”被引用,因为它们是“保留字”组R.中还有其他的保留字,(但for
并in
是那些行程我最常发生。)类型:
?Reserved
另外一个“技巧”是,italic()
如果需要斜体,请在数字内使用引号。未引用的数字不会在该函数内变为斜体。
注意事项:paste
是绘图函数,但其语义与有所不同base::paste function
。特别是它没有“ sep”参数。因此,您永远无法在打印的参数之间获得空格,并且如果尝试放入非空格项目,则所有其他参数之后都会出现一个实例。
paste0
不是绘图函数,因此不会被解释,而是会在圆括号内包含未处理的参数而显示为“未处理”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句