gpt4 book ai didi

r - ggplot轴标签中的下标字母

转载 作者:行者123 更新时间:2023-12-02 01:44:06 24 4
gpt4 key购买 nike

我正在尝试弄清楚如何在轴标签中包含下标字母。

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 解析器运行,并且当它们未通过测试是否可能是正确的 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 中的标记(或“名称”或“符号”)不应以数字开头。因此,您可以通过引用或使用非空格分隔符(即 * 运算符)分隔 1d 来绕过该限制。将纯数字文字与合法的 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的“保留字”组。还有其他保留字,(但是forin 是最常让我绊倒的。)输入:

 ?Reserved

另一个“技巧”是如果您需要斜体,请在 italic() 中的数字周围使用引号。未加引号的数字在该函数内不会变为斜体。

注意事项:paste 是一个绘图函数除了,它与 base::paste 函数 具有不同的语义。特别是,它没有 'sep' 参数。因此,您永远无法在打印的参数之间获得空格,并且如果您尝试放入非空格项,则在标记为 sep="" 的所有其他参数之后将出现一个实例。

paste0 不是一个绘图函数,因此不会被解释,而是会显示为“未处理”,其未处理的参数位于括号内。

关于r - ggplot轴标签中的下标字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17334759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com