ggplot中日期轴的中点

时间:2014-06-25 19:54:15

标签: r ggplot2

我想在x轴为Date的图上添加一些标签。我希望标签以中间为中心。如何在x轴上找到中点?

示例:

example <- data.frame(time = c("02/26/11", "05/26/10", "05/27/10", "05/28/10",   
                               "05/29/10", "06/27/10", "06/30/10", "10/27/10", 
                               "10/27/10", "12/26/12"),
                      value = c(5, 1, 7, 8, 11, 20, 14, 1, 20, 12))

example$time <- as.Date(example$time, format = "%m/%d/%Y")

ggplot(example, aes(x = time, y = value)) + geom_point() + 
    scale_x_date(labels = date_format("%b%Y"),
                 breaks = "3 month",
                 minor_breaks = "1 month")

现在,我想使用geom_text添加一个文本标签,其x坐标位于x轴的中间位置,y位于y轴的中间位置。

1 个答案:

答案 0 :(得分:1)

听起来你只想要像

这样的东西
xx<-data.frame(
    time=mean(range(example$time)),
    value=mean(range(example$value))
)

ggplot(example, aes(x = time, y = value)) + geom_point() + 
    geom_text(data=xx, label="midtext") +
    scale_x_date(labels = date_format("%b%Y"),
                 breaks = "3 month",
                 minor_breaks = "1 month")

通过找到每个轴的范围的中心,我们找到了图的中心。然后我们在geom_text的调用中使用这些值。

这将产生这张照片。

enter image description here

PS。我还将日期格式化行更改为

example$time <- as.Date(example$time, format = "%m/%d/%y")

因为你只有两位数而不是4位数年。