当使用gglot的geom_stangraph()创建一个直方图时,每个月的柱状图中的柱状图显示的柱状图中的柱状图没有与正确的日历月份对齐,也没有期望的高度.

我已经寻找了一段时间,但仍然没有找到一个令人满意的解决方案,用标签和箱子准确地反映日历月份来绘制每月数据的直方图.我有2个目标,并已初步try 了第一个目标,但要求协助第二个目标以及.

目标1:[高效]使用ggmap for each 日历月制作一个柱状图,并清楚地标记每个bin的月份

目标2:[高效地]使用ggmap for each 日历月制作一个柱状图,并只清楚地标记日历季度的内容(例如,10月1日至12月31日是2022年第四季度)

下面我展示了一个在2022年11月15日至2023年12月31日期间有400次观测的例子.通过设置种子,我们可以重复地确定2022年11月有16次观测.我的代码显示了试图使用binWidth和Scale_x_Date(DATE_BREAKS)的两个绘图示例,它们都没有生成标签与适当的bin精确对齐的绘图,也没有生成y值为16的第一个bin.

library(ggplot2)
set.seed(123)

# Create a dataframe with 400 random dates between Nov 15 2022 and Dec 31 2023
start_date <- as.Date("2022-11-15")
end_date <- as.Date("2023-12-31")
random_dates <- sample(seq(start_date, end_date, by="days"), 400, replace=TRUE)
df <- data.frame(Date = random_dates)

# There are 16 observations in November 2022
sum(random_dates >= as.Date("2022-11-01") & random_dates <= as.Date("2022-11-30"))

# Using binwidth = 30
ggplot(df, aes(x = Date)) +
  geom_histogram(binwidth = 30, fill = "lightgrey", color = "black") +
  labs(title = "binwidth = 30 (Nov 15 2022 - Dec 31 2023)",
       x = "Date",
       y = "Count") +
  theme_minimal()

# Using date_breaks = '1 month' (and warning says that it defaults to bins = 30)
ggplot(df, aes(x = Date)) +
  geom_histogram(fill = "lightgrey", color = "black") +
  scale_x_date(date_breaks = "1 month", date_labels = "%b %Y") +
  labs(title = "date_breaks = '1 month' (Nov 15 2022 - Dec 31 2023)",
       x = "Date",
       y = "Count") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90, hjust = 1))

以下是制作的地块:

Histogram using binwidth = 30 argument

Histogram using scale_x_date(date_breaks = "1 month")

先谢谢你

推荐答案

对于离散事件的计数,您需要条形图,而不是直方图.直方图估计连续随机变量的密度函数.在这种情况下,您可以通过制作每个月/年的工厂来制作条形图.这里我用的是lubridateinteraction,但如果你愿意,你也可以用其他的

df |>
  transform(monthyear = factor(interaction(lubridate::month(Date), lubridate::year(Date)))) |>
  ggplot(aes(x = monthyear)) + 
  geom_bar(width=1, color="white")

enter image description here

R相关问答推荐

根据选中三个复选框中的一个或两个来调整绘图

移除仪表板Quarto中顶盖和车身之间的白色区域

在R gggplot2中是否有一种方法将绘图轴转换成连续的 colored颜色 尺度?

使用data.table::fcase()而不是dplyr::case_When()时保持值

plotly hover文本/工具提示在shiny 中不起作用

计算两列中满足特定条件连续行之间的平均值

派生程序包| ;无法检索';return()';的正文

有没有可能用shiny 的书签恢复手风琴面板?

优化从每个面的栅格中提取值

计算使一组输入值最小化的a、b和c的值

快速合并R内的值

如何将EC50值绘制在R中的剂量-react 曲线上?

按镜像列值自定义行顺序

为什么不能使用lApply在包装函数中调用子集

使用R、拼图和可能的网格包绘制两个地块的公共垂直线

分隔日期格式为2020年7月1日

对一个数据帧中另一个数据帧中的值进行计数

如何根据顺序/序列从数据框中排除值

在shiny /bslb中,当卡片是从json生成时,如何水平排列卡片?

使用循环改进功能( struct 简单)