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

coord_flip类型图表数据不显示,双变量绘图报错求助

问题分析与修复方案

原代码的核心问题

  • 分组逻辑错误:仅按MH_SUI_EVR分组计算的MH_SUI_EVR_Count是全局总数,并非每个FREQ_CANN_USE(你需求中的FREQ_DAY_ALL)分类下的样本量,导致y轴映射数据与x轴分类不匹配。
  • 图层数据冲突:ggplot主数据是经过分组mutate后的数据集,但两个geom_bar又调用了原始数据集,造成美学映射(如x、y)的长度不一致,触发check_aesthetics()错误。
  • 变量名大小写问题:报错找不到MH_SUI_EVR_COUNT,是因为代码里定义的变量是MH_SUI_EVR_Count(驼峰式),大小写不匹配导致识别失败。

修正后的代码

先正确统计每个分类变量与自杀倾向组合下的样本量,再绘制分组柱状图:

# 按分类变量+自杀倾向分组,统计每组样本量
count_data <- PAST_YR_SUI_CANN %>% 
  group_by(FREQ_DAY_ALL, MH_SUI_EVR) %>% 
  summarise(sample_n = n(), .groups = "drop")

# 绘制分组柱状图
Test <- count_data %>% 
  ggplot(aes(x = factor(FREQ_DAY_ALL), y = sample_n, fill = factor(MH_SUI_EVR))) +
  geom_bar(stat = "identity", position = "dodge") +  # 并列显示分组柱形,堆叠用"stack"
  labs(
    x = "使用频率分类",
    y = "样本量",
    fill = "曾报告自杀倾向",
    title = "不同使用频率下的自杀倾向样本量分布"
  ) +
  scale_fill_discrete(labels = c("否", "是")) +  # 给0/1添加易懂标签
  coord_flip() +
  theme_minimal()

Test

关键说明

  • 若你的目标分类变量是FREQ_CANN_USE,直接替换代码中的FREQ_DAY_ALL即可。
  • 用position = "dodge"实现并列柱形,方便对比同一分类下的两组样本量;若需要堆叠效果,改为position = "stack"。
  • 所有图层统一使用预处理后的统计数据集,彻底解决数据长度不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:42:49