r - 如何将表达式传递给 ggplot 中的 geom_text 标签? (继续)

标签 r parsing ggplot2 expression geom-text

这是我的后续original question了解如何将带下标的表达式传递给 ggplot 中的 geom_text 标签。

Duckgeom_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 只解析相关的单元格?

谢谢!

最佳答案

作为替代方案,您可以使用 geom_richtext()从 ggtext 包中创建上标或下标 <sup>...</sup><sub>...</sub> .

library(ggplot2)
library(ggtext)

#Data
my_exp <- "my_exp<sub>sub</sub>"

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
ggplot(my_data, aes(x = var_1, y = var_2)) +
  geom_richtext(
    aes(label = label),
    # customization to remove background and border around labels
    fill = NA,
    label.colour = NA
  )

reprex package 创建于 2020-09-09 (v0.3.0)

关于r - 如何将表达式传递给 ggplot 中的 geom_text 标签? (继续),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63815731/

相关文章:

r - 如何使用 grid_arrange_shared_legend 在单列中排列图

r - 使用 R 时 getPortfolio 中未使用的参数

r - 基于 r 中的条件标准进行过滤

r - 变异用一个函数生成的多列?

parsing - 扩展模板解析器 : CodeIgniter. .. 嵌套数组问题

java - java中解析json对象,找不到对象

r - 如何根据列值删除行

java - 在java中使用Gson解析JSON数组/对象

r - 如何使用点更改ggplot2 boxplot颜色

r - 在 R 中使用 ggplot 更改图例的一部分?