如何在ggplot2分面网格图添加x=15竖线并转为ggplotly?
解决方案:在分面反转轴的ggplot2箱线图中添加竖线并转为ggplotly
问题原因
coord_flip()会反转坐标轴,原来的y轴(bad_fat)变为翻转后的x轴,原来的x轴(category)变为翻转后的y轴。你要添加的“x=15竖线”在翻转前其实是水平线y=15,直接用geom_vline(xintercept=15)会因为轴反转无法显示在正确位置。
修正后的完整代码
library(ggplot2) library(plotly) sbucks_new %>% ggplot(aes(x= category, y= bad_fat, color= category)) + geom_boxplot() + # 翻转后显示为竖线的水平线 geom_hline(yintercept = 15, color = "red", linetype = "dashed") + coord_flip() + facet_grid(~ milk_dummy)+ labs(title= "Unhealthy Fats in Milk drinks by Category", x= "Drinks Category", y="Bad Fats (g)") + theme_bw() %>% # 转换为交互式图 ggplotly()
关键说明
- 使用
geom_hline(yintercept=15):翻转坐标轴后,这条水平线会自动变成你需要的竖线,且默认在所有分面子图中显示。 - 直接链式调用
ggplotly():ggplotly能完整保留ggplot2的分面、轴反转和自定义线条设置,无需额外配置。
排查要点(若线条仍不显示)
- 检查
bad_fat的数值范围:如果15不在当前y轴范围内,添加expand_limits(y = c(0, max(sbucks_new$bad_fat) + 2))扩展轴范围。 - 确保ggplot2和plotly包为最新版本:旧版本可能存在兼容性问题,执行
update.packages(c("ggplot2", "plotly"))更新。
内容的提问来源于stack exchange,提问作者Clairine
相关产品推荐
相关产品推荐

