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

R语言中geom_bar无法正确展示数据的问题及条件处理需求

解决ggplot geom_bar因重复数据高度翻倍的问题

问题本质

你的数据集里部分date对应两行完全相同的TempAmb_Avg值,geom_bar默认会对同一x轴分组下的所有数值求和累加,所以条形高度变成了真实值的两倍;而geom_line是基于点的位置连线,不会累加重复值,因此显示正常。直接把所有TempAmb_Avg除以2会破坏非重复数据的准确性,所以需要针对性处理重复行。

解决方案代码

用dplyr包对数据做分组修正(未安装的话先运行install.packages("dplyr")):

library(dplyr)
library(ggplot2)

# 处理重复数据:仅对重复date的行修正数值
processed_data <- your_data %>%
  group_by(date) %>%
  mutate(
    # 如果该日期有2行重复,数值除以2;否则保持原样
    TempAmb_Avg_corrected = ifelse(n() == 2, TempAmb_Avg / 2, TempAmb_Avg)
  ) %>%
  ungroup()

# 绘制修正后的条形图
ggplot(processed_data, aes(x = date, y = TempAmb_Avg_corrected)) +
  geom_bar(stat = "identity")

扩展适配

如果数据集里存在超过2行的重复日期(比如同一日期有3行相同值),可以把判断逻辑改成按重复次数均分,确保累加后高度正确:

processed_data <- your_data %>%
  group_by(date) %>%
  mutate(
    TempAmb_Avg_corrected = TempAmb_Avg / n()
  ) %>%
  ungroup()

这样不管同一日期有多少重复行,geom_bar的高度都会对应真实的单值数据。

内容的提问来源于stack exchange,提问作者Cláudio Siva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:41:00