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

基于ggplot2按变量分布比例排序条形图及分面加均值线问题

解决ggplot2可视化需求的实现方案

1. 数据预处理(基于dplyr)

先计算各区域的不幸福比例,将区域转换为按该比例降序排列的有序因子,确保条形图的排序符合要求:

library(dplyr)
library(ggplot2)

# 计算全局各区域的不幸福比例,用于排序
region_global_order <- your_data %>%
  group_by(scode1_22) %>%
  summarise(unhappy_pct = mean(utsugds2gp_22 == 1, na.rm = TRUE)) %>%
  arrange(desc(unhappy_pct)) %>%
  pull(scode1_22)

# 将原数据的区域列转为有序因子
your_data <- your_data %>%
  mutate(scode1_22 = factor(scode1_22, levels = region_global_order))

2. 构建分面条形图并添加均值线

直接用stat_summary实现条形绘制与均值线添加,结合分面功能完成需求:

ggplot(your_data, aes(x = scode1_22, y = as.numeric(utsugds2gp_22 == 1))) +
  # 绘制各区域的不幸福比例条形
  stat_summary(fun = mean, geom = "col", fill = "#2563eb", alpha = 0.8) +
  # 为每个分面添加该组的不幸福比例均值虚线
  stat_summary(fun = mean, geom = "hline", color = "#dc2626", linetype = "dashed", size = 1,
               aes(yintercept = after_stat(y))) +
  # 按收入组分面,x轴随分面自由调整避免重叠
  facet_wrap(~income_3gp, scales = "free_x") +
  # 调整x轴标签角度,优化可读性
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  labs(x = "区域", y = "不幸福比例", title = "不同收入组下各区域不幸福比例分布(全局降序)")

可选:分面内单独排序

如果需要每个收入组内的区域按自身不幸福比例单独排序,可借助tidytext包的工具简化操作:

library(tidytext)

ggplot(your_data, aes(x = reorder_within(scode1_22, as.numeric(utsugds2gp_22 == 1), income_3gp), 
                      y = as.numeric(utsugds2gp_22 == 1))) +
  stat_summary(fun = mean, geom = "col", fill = "#2563eb", alpha = 0.8) +
  stat_summary(fun = mean, geom = "hline", color = "#dc2626", linetype = "dashed", size = 1,
               aes(yintercept = after_stat(y))) +
  facet_wrap(~income_3gp, scales = "free_x") +
  scale_x_reordered() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  labs(x = "区域", y = "不幸福比例", title = "不同收入组下各区域不幸福比例分布(组内降序)")

关键说明

  • 若utsugds2gp_22本身已是0/1数值,可直接用y = utsugds2gp_22替代as.numeric(utsugds2gp_22 == 1);
  • stat_summary自动处理分组均值计算,避免手动统计后绘图的冗余步骤;
  • scales = "free_x"确保每个分面的x轴只显示当前组的区域,避免标签拥挤。

内容的提问来源于stack exchange,提问作者Alice Chen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:05:07