如何为ggplot2的facet_grid分面图添加分面之间的虚线分隔线
解决方案
你可以借助ggh4x扩展包的facet_grid2()功能实现需求,它原生支持自定义分面分隔线样式,不需要手动计算坐标或修改底层绘图对象,代码修改成本极低。
完整可运行代码
如果未安装ggh4x先执行安装命令:install.packages("ggh4x")
绘图代码:
library(ggplot2) library(ggstance) library(ggh4x) # 数据集和原有逻辑保持一致 data_people <- data.frame(Group = c("Good", "Medium", "Medium", "Medium", "Medium", "BAD", "BAD", "BAD", "BAD"), people = c("Jonney", "Eva", "Eilse", "Doe", "Matt", "June", "Som", "Clara","Nick"), number = c(0.04, 0.09, 0.10, 0.13, 0.13, 0.06, 0.05, 0.00, 0.3)) ggplot(data = data_people, aes(x = number, y = people, group = Group)) + geom_barh(stat = "identity", colour = "black") + scale_x_continuous(breaks = c(-0.20, 0.00, 0.20, 0.40, 0.60, 0.80, 1.00), limits = c(-0.20, 1)) + # 替换原有facet_grid,添加分面分隔线配置 facet_grid2(Group~., scales = "free_y", space = "free_y", switch = 'y', panel.lines = element_line(linetype = "dashed", color = "black", linewidth = 0.5)) + # 可调整分面间距让分隔线显示更清晰 theme(panel.spacing.y = unit(0.5, "lines")) + xlab(" ") + ylab(" ")
运行上述代码即可得到分面之间带虚线分隔的预期效果,你可以通过修改element_line内的参数自定义虚线的颜色、粗细、虚实程度。
内容的提问来源于stack exchange,提问作者Saw Simeon
相关产品推荐
相关产品推荐

