You need to enable JavaScript to run this app. R语言ggplot2绘制新冠病例柱状图日期轴显示异常的解决求助
优惠活动
大模型
产品
解决方案
定价
更多

R语言ggplot2绘制新冠病例柱状图日期轴显示异常的解决求助

解决x轴日期标签重叠的可落地方法
  • 首先确认Case_date字段为R可识别的日期格式:执行class(COVID_CASES$Case_date)校验,如果返回值是字符型,先做格式转换:COVID_CASES$Case_date <- as.Date(COVID_CASES$Case_date),否则后续的日期控制参数无法生效
  • 最直接的优化方案是通过scale_x_date()自定义x轴的刻度粒度,不需要修改原始数据即可实现按月打标签的效果,参考可运行代码如下:
# 加载依赖包
library(ggplot2)
library(scales)

ggplot(data = COVID_CASES, aes(x = Case_date, y = cases)) +
  geom_bar(stat = "identity", fill = "purple") +
  scale_x_date(
    date_breaks = "1 month", # 控制刻度间隔为1个月,可按需调整为"2 months"拉长间隔
    date_labels = "%Y-%m", # 刻度显示为“年-月”格式,避免冗余
    expand = expansion(mult = c(0.01, 0.01)) # 压缩柱子与画布边缘的多余留白
  ) +
  # 可选配置:将x轴标签倾斜45度并右对齐,进一步避免文字横向重叠
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  labs(title = "Total Cases within the US",
       subtitle = "2020 -2021",
       x = "Date", y = "Number of Cases")
  • 如果追求更清爽的展示效果,可以先把逐日粒度的病例数按月份聚合,再基于聚合结果绘图——这种方式不会保留大量逐日的细柱条,视觉粒度和刻度保持一致:
# 需提前加载dplyr、lubridate包做数据聚合
COVID_MONTHLY <- COVID_CASES |>
  dplyr::mutate(统计月份 = lubridate::floor_date(Case_date, unit = "month")) |>
  dplyr::group_by(统计月份) |>
  dplyr::summarise(月度总病例 = sum(cases, na.rm = TRUE))

# 基于聚合数据绘图
ggplot(data = COVID_MONTHLY, aes(x = 统计月份, y = 月度总病例)) +
  geom_bar(stat = "identity", fill = "purple") +
  scale_x_date(date_breaks = "1 month", date_labels = "%Y-%m") +
  labs(title = "Total Cases within the US",
       subtitle = "2020 -2021",
       x = "Date", y = "Number of Cases")
  • 临时出图的轻量调整方案:不需要修改刻度规则,直接在主题配置中调整x轴文字的显示角度,就算保留原有密集刻度,也不会因为文字横排完全重叠无法辨认。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 15:15:02