R 如何使用斜体和非斜体标记y轴标签的一部分

R 如何使用斜体和非斜体标记y轴标签的一部分,r,ggplot2,R,Ggplot2,我正在使用ggplot2绘制以物种名称作为y轴标签的绘图,例如: data_1 <- data.frame( name = c("1_Enterococcus faecalis_ab1", "3_Bifidobacterium longum_ab2", "5_Bifidobacterium breve_ab12"), value = c(1, 3, 5) ) data_2 <- data.frame( n

我正在使用ggplot2绘制以物种名称作为y轴标签的绘图,例如:

data_1 <- data.frame(
   name = c("1_Enterococcus faecalis_ab1", "3_Bifidobacterium longum_ab2", "5_Bifidobacterium breve_ab12"),
   value = c(1, 3, 5)
) 
data_2 <- data.frame(
   name = c("1_Enterococcus faecalis_ab1", "3_Bifidobacterium longum_ab2", "5_Bifidobacterium breve_ab12"),
   value = c(3, 5, 3)
)
ggplot()+geom_point(data=data_1,aes(x=value,y=name))+geom_point(data=data_2,aes(x=value,y=name))


data\u 1我们可以使用
ggtext
方法

library(dplyr)
library(ggtext)
library(stringr)
library(ggplot2)
data %>% 
     mutate(name = str_replace(name, "(\\d+)_([^)]+)_(.*)$", "\\1_*\\2*_\\3")) %>%
     ggplot(aes(value, name)) + 
       geom_point() +
       theme(axis.text.y = element_markdown())

编辑-如果您有两个格式类似的表,则最容易绑定它们并将格式化代码应用于该表:

bind_rows(data_1, data_2, .id = "src") %>%
  separate(name, c("num", "binomial", "label"), sep = "_") %>%
  mutate(name_fmt = paste0(num, "_*", binomial, "*_", label)) %>%
  
  ggplot(aes(x=value,y=name_fmt, color = src)) + geom_point() +
  theme(axis.text.y = element_markdown())

如果结构不同,我建议将格式分别应用于两个数据表。

非常感谢您的回复。如果仅使用一个数据集生成图形,则该方法有效。如果有两个数据集,如在我的问题中编辑的?用方法编辑了两个表。非常感谢回复。非常感谢回复。如果仅使用一个数据集生成图形,则该方法有效。如果有两个数据集,如我问题中编辑的?
bind_rows(data_1, data_2, .id = "src") %>%
  separate(name, c("num", "binomial", "label"), sep = "_") %>%
  mutate(name_fmt = paste0(num, "_*", binomial, "*_", label)) %>%
  
  ggplot(aes(x=value,y=name_fmt, color = src)) + geom_point() +
  theme(axis.text.y = element_markdown())