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

如何让ggplot中grp_2按因子水平顺序连接组均值线?

解决ggplot中按因子水平顺序连线的问题

问题原因

geom_line默认会按照x轴变量(est)的数值大小连接点,而非level的因子顺序。grp_1的连线看似正常,只是因为它的est数值刚好和level顺序匹配;grp_2的est数值乱序,所以连线也跟着乱了。

解决方案

要让连线严格遵循level的因子顺序,只需确保每个分组(grp)内的数据按level排序,geom_line就会按该顺序连接点。

方式一:预处理数据时排序

修改数据生成代码,添加arrange(grp, level)来排序:

library(tidyverse)

# 生成数据集并排序
dat <-  data.frame (level = c("level 1", "level 2", "level 3", "level 4","level 1", "level 2", "level 3", "level 4"),
                    grp = c("grp_2","grp_2","grp_2","grp_2","grp_1","grp_1","grp_1","grp_1"),
                    est = c(0, 0.739, 1.39, -1.85,0, -0.587, -1.02, -3.30)) %>% 
  as_tibble() %>% 
  mutate(level = as.factor(level),
         grp = as.factor(grp)) %>%
  arrange(grp, level)  # 按分组和level因子顺序排序

# 绘图
dat %>% 
  ggplot(aes(x = est, y = fct_rev(level))) +
  geom_line(aes(group = grp)) +
  facet_grid(~ grp) +
  geom_vline(
    xintercept = 0,
    linetype = 6,
    size = 0.4,
    colour = "black"
  ) +
  labs(
    x = "Mean of something",
    y = 'Highest qualification') +
  theme_bw() 

方式二:绘图时临时排序(不修改原数据)

如果不想改动原数据,可以在geom_line的data参数中传入排序后的子集:

library(tidyverse)

# 生成原数据集
dat <-  data.frame (level = c("level 1", "level 2", "level 3", "level 4","level 1", "level 2", "level 3", "level 4"),
                    grp = c("grp_2","grp_2","grp_2","grp_2","grp_1","grp_1","grp_1","grp_1"),
                    est = c(0, 0.739, 1.39, -1.85,0, -0.587, -1.02, -3.30)) %>% 
  as_tibble() %>% 
  mutate(level = as.factor(level),
         grp = as.factor(grp))
  
# 绘图时指定排序数据给geom_line
dat %>% 
  ggplot(aes(x = est, y = fct_rev(level))) +
  geom_line(aes(group = grp), data = . %>% arrange(grp, level)) +
  facet_grid(~ grp) +
  geom_vline(
    xintercept = 0,
    linetype = 6,
    size = 0.4,
    colour = "black"
  ) +
  labs(
    x = "Mean of something",
    y = 'Highest qualification') +
  theme_bw() 

效果说明

修改后,grp_2的连线会和grp_1保持一致,严格按照level的因子顺序(对应y轴从下到上的level 4到level 1)连接各点,不再受x轴数值的干扰。

内容的提问来源于stack exchange,提问作者Mohamed Yusuf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:30:50