自定义标题并将文本添加到方面?

Customize title and add text into facet?

有人可以帮我编辑条形图标题吗?我正在尝试在 facet 中编辑条形图的标题,但不知何故它不起作用,而且我想在每个条中添加文本,如 'a'、'b' 或 'ab'(有点统计解释)。 这是我的代码:

df <- data.frame(
H1 = c(6.36, 3.03, 6.85, 4.07, 4.69, 6.27, 6.67, 3.11, 5.07, 6.14, 5.93, 6.49),
H2 = c(5.15, 5.00, 5.71, 5.50, 4.99, 5.81, 6.05, 5.76, 5.28, 5.69, 5.69, 5.06),
H3 = c(3.85, 5.13, 4.99, 4.91, 5.01, 5.73, 5.77, 5.94, 5.57, 5.35, 6.00, 4.39),
H4 = c(3.84, 4.80, 5.15, 4.85, 4.99, 5.73, 5.77, 5.45, 5.44, 5.41, 5.81, 4.46),
H5 = c(4.08, 5.17, 4.77, 5.03, 5.00, 5.49, 5.49, 5.80, 5.51, 5.18, 5.76, 4.60),
H6 = c(4.35, 5.59, 5.59, 4.83, 5.52, 5.63, 5.85, 5.74, 5.66, 5.19, 5.79, 4.84), fontface = c("bold"),
names = c("Russian Banana", "Vermillion", "Atlantic", "POR12PG28-3",
           "Valery", "Rio Colorado", "CO99076-6R", "Purple Majesty",
           "AC99330-1P/Y", "CO05068-1RU", "Masquerade", "Canela Russet"),
specie = c(rep("Appearance", 12), rep("Aroma" , 12), rep("Flavor" , 12),
            rep("Overall" , 12), rep("Aftertaste", 12), rep("Texture", 12)),
condition = rep(c("Russian Banana", "Vermillion", "Atlantic", "POR12PG28-3",
                   "Valery", "Rio Colorado", "CO99076-6R", "Purple Majesty",
                   "AC99330-1P/Y", "CO05068-1RU", "Masquerade", "Canela Russet") , 6))
df <- df %>% 
  pivot_longer(starts_with("H"))

nameframe <- enframe(unique(df$name))
specieframe <- enframe(unique(df$specie))
specie.labs <- c("Appearance", "Aroma", "Flavor", "Overall", "Aftertaste", "Texture")
names(specie.labs) <- c("H1", "H2", "H3", "H4", "H5", "H6")


(filtframe <- inner_join(nameframe, specieframe, by = "name") %>% mutate(
  filtcont =
    paste0(
      "(name=='", value.x,
      "' & ", "specie=='", value.y, "')"
    )
))

(filtcond <- paste0(filtframe$filtcont, collapse = " | "))

df_filt <- filter(
  df,
  !!rlang::parse_expr(filtcond)
)
ggplot() +
  geom_col(data = df_filt, mapping = aes(x = names, y = value, fill = specie), position = "dodge") +
  coord_flip() +
  labs(y = "", x = "") + theme(legend.title = element_blank()) +
  scale_fill_discrete(breaks=c("Appearance","Aroma","Flavor", "Overall", "Aftertaste", "Texture")) +
  facet_wrap(vars(name), labeller = labeller(specie = specie.labs))

enter image description here

像这样创建 labeller

map_species <- function(species) specie.labs[species]

然后用facet_wrap()中的公式表示法引用labeller()中的换行列(我叫它h_name):

df %>%
  pivot_longer(starts_with("H"), names_to = "h_name") %>%
  ggplot(aes(x = names, y = value, fill = specie)) +
    geom_col(position = "dodge") +
    coord_flip() +
    labs(y = "", x = "") + 
    theme(legend.title = element_blank()) +
    scale_fill_discrete(
      breaks=c("Appearance","Aroma","Flavor", "Overall", "Aftertaste", "Texture")
      ) +
    facet_wrap(~h_name, labeller = labeller(h_name = map_species))