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

使用ggplot绘制单组变量柱状图,仅展示「是否出行」列单个类别

调整方案

第一步:提前过滤目标数据

先在绘图前筛选出「Having trip」列中你需要展示的特定类别,避免冗余数据进入绘图逻辑:

# 加载依赖包,未安装可先执行install.packages(c("ggplot2","dplyr","scales"))
library(ggplot2)
library(dplyr)
library(scales)

# 过滤数据集,以下示例中请将右侧值替换为你实际要展示的「Having trip」列的对应类别
combo_n_filtered <- combo_n %>%
  filter(`Having trip` == "目标类别值")

第二步:修正绘图代码的冲突逻辑

原有代码存在两处明显问题:一是全局aes中设置的fill参数和geom_bar里硬编码的fill="white"完全冲突,二是百分比计算的写法过时易出错,调整后代码如下:

ggplot(combo_n_filtered, aes(x = N_Trips)) + 
  geom_bar(
    aes(y = after_stat(count / sum(count))),
    color = "blue", 
    fill = "white"
  ) +
  facet_grid(REFYEARP ~ REFMTHP) +
  theme(axis.text.x = element_text(size = 8, angle = 90)) +
  geom_hline(aes(yintercept = -Inf)) + 
  geom_vline(aes(xintercept = -Inf)) +
  scale_y_continuous(labels = percent_format()) +
  labs(title = "月度统计", y = "占比", x = "出行次数") +
  coord_cartesian(clip = "off")

核心改动说明

  • 提前过滤数据集是最稳定的单类别展示方案,不需要在绘图层做额外判断,能避免逻辑错误
  • 用after_stat()替代过时的..count..写法,可读性和兼容性更好,分面场景下会自动按每个分面的总样本量计算占比,和原有需求逻辑一致
  • 删掉了冗余冲突的fill参数设置,逻辑更清晰
  • 如果你原本希望x轴展示「Having trip」的类别属性,只需把aes(x = N_Trips)替换为aes(x = Having trip)即可,和你原代码labs里的x轴说明对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 08:45:03