0

是否可以使用 R 将日期添加到 ggplot 图表(图表数据基于该图表)?我有代码可以在一周内选择最多的日常数据,然后将其绘制出来。示例数据框(来自先前的答案)如下所示:

set.seed(1234)
df <- data.frame(Date=seq(as.POSIXct("05:00", format="%H:%M"), 
                          as.POSIXct("23:00", format="%H:%M"), by="hours"))
df$Counts <- sample(19)
df <- df[-c(4,7,17,18),]

# generate the groups automatically and plot
idx <- c(1, diff(df$Date))
i2 <- c(1,which(idx != 1), nrow(df)+1)
df$grp <- rep(1:length(diff(i2)), diff(i2))
g <- ggplot(df, aes(x=Date, y=Counts)) + geom_line(aes(group = grp)) + 
  geom_point()
g

我知道我可以使用以下代码让 R 计算出我的数据是一周中的哪一天:

d <- as.Date("19/02/2013","%d/%m/%Y") 
format(d, "%A, %b %d, %Y")

但我显然必须手动输入日期才能正常工作。

是否可以让 R 读取数据框并计算出数据所基于的星期几(只有一天),然后将其添加为图表右上角的图例?理想情况下,格式应包括日期和日期(例如,2013 年 2 月 19 日,星期二)。

编辑

我想将日期添加为图表中的文本。我可以为此使用 geom_text 吗?这目前不起作用,但到目前为止我已经得到:

g + geom_text(aes(x=as.POSIXct("18:00:00", format="%H:%M:%S"), y=1500), label=date_format("%A, %b %d, %Y")", size=2)

谁能告诉我我做错了什么?

4

1 回答 1

2

正如 Arun 所建议的(见评论),您可以格式化输入数据或向当前绘图添加格式:

 library(scales)
 g+ scale_x_datetime(labels = date_format("%A, %b %d, %Y"))

编辑

我猜你想注释你的图表添加一个日期指示器

由于您将添加单个日期,因此您可以使用annotate,它比使用会重叠许多日期的 geom_text 更好。例如:

 label <- unique(format(as.Date(df$Date, "%d/%m/%Y"),
                                "%A, %b %d, %Y"))
 g+ annotate("text", x = mean(df$Date), y = 20, 
       label = label,size=20, col='red')

在此处输入图像描述

于 2013-02-19T12:45:10.847 回答