将垂直线添加到ggplot条形图中

时间:2016-06-17 14:40:57

标签: r ggplot2

我正在尝试将垂直线添加到每月显示计数数据的ggplot。我的x轴是月份的一个因素,但我的垂直线代表朱利安天。

例如,使用这些数据:

dat <- structure(list(Month = structure(1:12, .Label = c("Jan", "Feb", 
"Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", 
"Dec"), class = c("ordered", "factor")), Data = c(1, 1, 2, 2, 
6, 11, 19, 23, 19, 13, 5, 1)), .Names = c("Month", "Data"), class = "data.frame", row.names = c(NA, 
-12L))

我可以制作以下条形图

ggplot(dat)+ geom_bar(aes(x=  Month, y = Data), stat="identity")

如何使用geom_vline添加两条垂直线,其中x截距为Julian day 68和252?

我不确定如何在月度(因子)x轴数据上绘制引用连续比例的线。

2 个答案:

答案 0 :(得分:2)

当您的x轴为factor时,geom_vline将使用每个值的外观顺序作为截距。

然后,您只需要确定哪个分数与您要查找的确切日期相对应。在这个例子中,我使用了两个说明性的分数。

ggplot(dat)+ geom_bar(aes(x=  Month, y = Data), stat="identity") + 
geom_vline(xintercept = 5.2) +
  geom_vline(xintercept = 8.7) 

答案 1 :(得分:2)

每月使用一个单位绘制数据,因此您需要将该行添加为年中的一小部分(以月为单位),并为条形大小添加一些偏移量:

ggplot(dat) +
  geom_bar(aes(x = Month, y = Data), stat = "identity") + 
  geom_vline(xintercept = 12 * (c(68, 252) / 365) + 0.5) 

通过查看第1天和第365天的行来检查:

ggplot(dat) +
  geom_bar(aes(x = Month, y = Data), stat = "identity") + 
  geom_vline(xintercept = 12 * (c(1, 365) / 365) + 0.5) 

每隔一天将在图表中进行线性插值。