【发布时间】:2015-07-20 09:05:55
【问题描述】:
我想为使用ggplot2 生成的直方图的背景着色。我想要look like the one in the answer here的背景。
这是我的代码:
dates <- seq(from = as.Date("2015/1/1"), to = as.Date("2015/12/31"), "day")
library(lubridate)
day <- yday(dates)
month <- month(dates)
df <- data.frame(day, month)
library(dplyr)
df %>%
sample_n(50) ->
df
library(ggplot2)
ggplot(df, aes(day)) + geom_histogram() +
scale_x_continuous(breaks = seq(0, 365, 10), limits = c(0, 365)) +
theme_bw()
这会产生这个情节:
这是我尝试过的,但不起作用:
ggplot(df, aes(day)) + geom_histogram() +
geom_rect(xmin = day, xmax = day, ymin = -Inf, ymax = Inf, fill = month) +
scale_x_continuous(breaks = seq(0, 365, 10), limits = c(0, 365)) +
theme_bw()
【问题讨论】:
-
答案很清楚你需要做什么。哪一部分难以理解?
-
您是否查看过您的问题的其他答案? stackoverflow.com/questions/31510796/…
-
@RomanLuštrik 如果您查看链接答案中的
rects,geom_rect的xstart和xend参数每个都有自己的变量。但是在我创建的df中,我只有一个变量day,它被geom_histogram转换为bin,所以不清楚xmin和xmax的值应该是什么。 -
背景的着色在第二层完成,可以(或不)连接到使用的原始数据集。你告诉 ggplot 是你想在 x 轴上每天绘制一些东西,在 y 轴上从 -Inf 到 Inf 绘制一些东西。如果您考虑一下,每天的区域宽度为 0。传递给 xmin 和 xmax 的值必须使它们产生正差。
标签: r ggplot2 data-visualization