给 ggplot 条形图添加垂直线

4

我正在尝试在显示每月计数数据的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轴数据的线。


第68天和第252天是哪些日期? - Spacedman
是的,我的意思是如果你说第68天是三月某个日期就更方便了! - Spacedman
哦,是的。抱歉没有更具体地说明。谢谢你的回答! - B. Davis
2个回答

5
当你的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) 

我可以请求进一步说明吗?因为我需要绘制的日期可能会在未来发生变化。 - B. Davis
我不认为5.2和9.2对应于给定的年天数。 - Spacedman
@Spacedman,我在答案中已经解释了这些是举例的分数。我看到你包括了一种简单的方法来计算线条的精确位置,做得好! - rafa.pereira

3
数据以每月一个单位绘制,因此您需要将线条添加为年份的月份分数,并为柱形大小添加一些偏移量:
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) 

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接