如何为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
相关产品推荐
相关产品推荐

