gpt4 book ai didi

R - 解释 ggplot 中使用的变量中的下标

转载 作者:行者123 更新时间:2023-12-04 11:40:32 25 4
gpt4 key购买 nike

我正在使用 ggplot 来做一些多线图,这些图由大量变量和粘贴的使用构成。我一直无法弄清楚如何让 O3 中的下标 3 出现在以下代码的简化版本中。

gasSubscript <- "O[3]"
color1 <- paste(gasSubscript,"some additional text")
df <- data.frame(x = c(1,2,3,4,5,6,7,8,9,10), y = c(10,9,8,7,6,5,4,3,2,1))
testPlot <- ggplot(data = df, aes(x = x)) + geom_line(aes(y = y, color = color1))

颜色 1 包含
  "O[3] some additional text"

图例显示为“O[3] 一些附加文本”,而不是带有下标的 3。

最佳答案

问题是您需要比例尺中的标签是一个表达式,以便在渲染时根据 plotmath 的规则进行渲染。 .然而,ggplotdata.frame 合作s 和 data.frame s 不能有作为表达式向量的列。所以解决这个问题的方法是将信息存储为 plotmath 的文本(字符串)版本。表达式,作为制作标签的最后一步,将它们转化为表达式。这是可以做到的,因为 labels缩放函数的参数本身可以是一个可以转换/格式化标签的函数。

将其与您的示例放在一起:

color1 <- paste(gasSubscript,"*\" some additional text\"")

这是现在可以制作成表达式的格式。
> color1
[1] "O[3] *\" some additional text\""
> cat(color1)
O[3] *" some additional text"
> parse(text=color1)
expression(O[3] *" some additional text")

使用该格式,您可以强制比例尺将标签解释为表达式,这将导致它们按照 plotmath 的规则进行渲染。 .
testPlot <- ggplot(data = df, aes(x = x)) + 
geom_line(aes(y = y, color = color1)) +
scale_colour_discrete(labels = function(x) parse(text=x))

enter image description here

使用 labels函数方法适用于存储在 data.frame 中的数据同样,只要字符串被格式化以便它们可以被解析。
DF <- data.frame(x=1:4, y=rep(1:2, times=2), 
group = rep(c('O[3]*" some additional text"',
'H[2]*" some different text"'), each = 2))

ggplot(DF, aes(x, y, colour=group)) +
geom_line() +
scale_colour_discrete(labels=function(x) parse(text=x))

enter image description here

关于R - 解释 ggplot 中使用的变量中的下标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29995022/

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