geom_line未按y轴(土壤深度)顺序连接的问题求助
解决ggplot中geom_line按土壤深度顺序连线的问题
问题根源:ggplot的
geom_line()是按照数据框中行的顺序连接点,而非y轴的显示顺序。你遇到的连线错误,是因为对应分组(interaction(Type, site))内的数据行没有按土壤深度的正确顺序排列。修正步骤:
- 将
depth_cm转换为指定顺序的有序因子,明确深度的先后逻辑:# 设定深度的正确顺序:0→0-2→2-5→5-10 depth_order <- c("0", "0-2", "2-5", "5-10") dat_combined$depth_cm <- factor(dat_combined$depth_cm, levels = depth_order, ordered = TRUE) - 按照分组(
Type+site)和深度顺序对数据框排序,确保每个分组内的点按深度顺序排列:# 用dplyr排序(需先加载dplyr包) library(dplyr) dat_combined <- dat_combined %>% arrange(Type, site, depth_cm) # 或者用base R排序,无需额外包 dat_combined <- dat_combined[order(dat_combined$Type, dat_combined$site, dat_combined$depth_cm), ] - 运行你原有的ggplot代码即可,此时
geom_line()会按照深度顺序连接每个分组内的点。
- 将
额外简化:如果你的
depths向量已经是c("5-10", "2-5", "0-2", "0")这类从深到浅的顺序,可直接用它生成因子水平:dat_combined$depth_cm <- factor(dat_combined$depth_cm, levels = rev(depths), ordered = TRUE)因为你在
scale_y_discrete中用了rev(depths),反转后的正好是你需要的0→0-2→2-5→5-10顺序。
内容的提问来源于stack exchange,提问作者J.M
相关产品推荐
相关产品推荐

