Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot轴标签中的下标字母_R_Ggplot2 - Fatal编程技术网

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