You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为ggplot2分面添加通用标签?批量绘图实现方案

为ggplot2离散型数据分面图添加通用标签的解决方案

我尝试给ggplot2的分面图添加通用标签,但一直没能成功。相关问题的现有方案并不适用于我的离散型数据,即便有可行方案,也因为需要绘制24张同类图表,希望能封装成函数避免重复代码。最终我通过ggh4x包的facet_nested()函数解决了问题,以下是相关内容:

示例数据

prueba <- structure(list(
  UnidadD = c(5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 4L, 5L, 5L, 5L, 
              5L, 5L, 5L, 5L), 
  Lección.de.dificultad = c(
    "3. Funciones trigonométricas", "4. Práctica en GeoGebra", 
    "4. Práctica en GeoGebra", "4. Práctica en GeoGebra", 
    "1. Función biyectiva e inversa", "3. Funciones trigonométricas", 
    "2. Función logarítmica", "1. Función biyectiva e inversa", 
    "3. Funciones trigonométricas", "3. Funciones trigonométricas", 
    "4. Práctica en GeoGebra", "3. Funciones trigonométricas", 
    "2. Funciones y ecuaciones exponenciales", "3. Funciones trigonométricas", 
    "3. Funciones trigonométricas", "3. Funciones trigonométricas", 
    "3. Funciones trigonométricas", "3. Funciones trigonométricas", 
    "3. Funciones trigonométricas", "3. Funciones trigonométricas"
  )
), class = "data.frame", row.names = c(NA, -20L))

初始绘图代码(未添加通用标签)

prueba %>% 
  group_by(UnidadD, Lección.de.dificultad) %>%
  summarise(n = n()) %>%
  arrange(desc(Lección.de.dificultad)) %>%
  ungroup() %>%
  mutate(Lección.de.dificultad=factor(Lección.de.dificultad, levels=Lección.de.dificultad)) %>%
  ggplot(aes(Lección.de.dificultad, n)) +
  geom_col(fill = '#5081ac') +
  facet_grid(UnidadD~., scales = "free", space = 'free') +
  coord_flip() +
  xlab('Lecciones con mayor dificultad') +
  ylab('Cantidad de participantes') +
  theme(axis.line = element_line(colour = 'black'),
        panel.background = element_blank(),
        axis.text = element_text(size = 16),
        axis.title = element_text(size = 18),
        panel.grid.major.y = element_line(colour = 'gray'),
        panel.grid.minor.y = element_line(colour = 'gray'),
        plot.title = element_text(hjust = 0.5,
                                  size = 18),
        text = element_text(family = 'Sans'),
        strip.background = element_rect(fill = "#afc7e3"),
        strip.text = element_text(size = 14))

最终解决方案代码(添加通用分面标签)

prueba[(prueba$Grado == 11) & (prueba$BC == "Funciones"),] %>% 
  group_by(UnidadD, Lección.de.dificultad) %>%
  summarise(n = n()) %>%
  arrange(desc(Lección.de.dificultad)) %>%
  ungroup() %>%
  mutate(Lección.de.dificultad=factor(Lección.de.dificultad, levels=Lección.de.dificultad)) %>%
  ggplot(aes(Lección.de.dificultad, n)) +
  geom_col(fill = '#5081ac') +
  ggh4x::facet_nested("Unidad" + UnidadD~., scales = "free", space = "free") +
  coord_flip() +
  xlab('Lecciones con mayor dificultad') +
  ylab('Cantidad de participantes') +
  theme(axis.line = element_line(colour = 'black'),
        panel.background = element_blank(),
        axis.text = element_text(size = 16),
        axis.title = element_text(size = 18),
        panel.grid.major.y = element_line(colour = 'gray'),
        panel.grid.minor.y = element_line(colour = 'gray'),
        plot.title = element_text(hjust = 0.5,
                                  size = 18),
        text = element_text(family = 'Sans'),
        strip.background = element_rect(fill = "#afc7e3"),
        strip.text = element_text(size = 16)) +
  labs(title = 'Funciones (Segundo año de bachillerato)')

内容的提问来源于stack exchange,提问作者Kevin Santos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 06:15:43