这是我在ggplot中如何将带下标的表达式传递给geom_text标签的原问题的后续。
Duck提供了一个很好的解决方案,使用geom_text()
命令内的parse = T
。然而,我现在遇到了一个问题,因为我想传递表达式的变量包含其他看起来无法理解的内容,即使使用parse = T
也无法解决。
以下是我的当前代码(再次感谢Duck提供了这个解决方案):
library(ggplot2)
library(tidyverse)
#Data
my_exp <- as.character(expression('my_exp'[s][u][b]))
my_data <-
data.frame(
var_1 = c("9R", "14M", "17C"),
var_2 = c(1, 2, 3),stringsAsFactors = F
)
#Mutate
my_data$label <- ifelse(my_data$var_1=='9R',my_exp,my_data$var_1)
#Plot
my_data %>%
ggplot(aes(x = var_1, y = var_2))+
geom_text(aes(label = label),parse = T)
以下是我尝试渲染ggplot时出现的错误输出:
> library(ggplot2)
> library(tidyverse)
> #Data
> my_exp <- as.character(expression('my_exp'[s][u][b]))
> my_data <-
+ data.frame(
+ var_1 = c("9R", "14M", "17C"),
+ var_2 = c(1, 2, 3),stringsAsFactors = F
+ )
> #Mutate
> my_data$label <- ifelse(my_data$var_1=='9R',my_exp,my_data$var_1)
> #Plot
> my_data %>%
+ ggplot(aes(x = var_1, y = var_2))+
+ geom_text(aes(label = label),parse = T)
Error in parse(text = text[[i]]) : <text>:1:3: unexpected symbol
1: 14M
^
>
看起来 R 在读取没有传递表达式的单元格时遇到了困难。有没有办法让 R 只解析相关的单元格?
谢谢!