我正在尝试创建一个直方图,它使用数据集中的一列作为填充颜色,使用数据集中的另一列作为组。 这两个都在
aes()
中定义。 然后我在每个组周围添加一个白色边框。 组数多于填充类别。
我的问题是,当我定义组时,同一填充类别内的子组不会在条中堆叠在一起 - 它们似乎遵循随机顺序。 我尝试通过填充列对
data.frame
进行排序,然后将其传递给 ggplot()
但这没有帮助。
如何将具有相同填充类别的观察值一起显示,即使它们位于不同的子组中且来自不同的日期(我的 x 轴是日期)?
这是一些示例数据:
# Set seed for reproducibility:
set.seed(123)
# Set start date:
start_date <- as.Date("2024-01-01")
# Set end date:
end_date <- as.Date("2024-04-01")
# Create data.frame:
data <- data.frame(
onset_date = sample(seq(start_date, end_date, by = "day"),
100,
replace = TRUE),
category = sample(c("A", "B"),
100,
replace = TRUE))
# Add row names for grouping:
data$grouping <- as.numeric(row.names(data))
# Create epicurve_breaks
epicurve_breaks <- seq.Date(
from = start_date,
to = end_date,
by = "week")
这是没有分组的直方图:
p1 <- ggplot(data,
aes(x = onset_date, fill = category)) +
geom_histogram(breaks = epicurve_breaks,
closed = 'left',
colour = "white")
这给出了以下图 - - 正如您可以看到来自同一填充类别的实体堆叠在一起:
这是我添加组时的绘图代码:
p2 <- ggplot(data,
aes(x = onset_date, fill = category, group = grouping)) +
geom_histogram(breaks = epicurve_breaks,
closed = 'left',
colour = "white")
这是分组图 - 现在类别 A 和 B 方块不再聚集在条形图上:
任何有关如何将类别分组在一起(即使类别内有子组)的建议,我们将不胜感激。