我一直在尝试将自己关于绘制甘特图的答案扩展到更一般的情况。我在这里说明部分结果:
此图表上绘制了许多行程,红点代表出发,绿点代表返回。现在这是我的挑战:
- 我想用灰色点标记离开和返回之间的所有日子,而其他所有日子都保持不变。
- 我希望这些点能够正确地围绕不同的月份长度(例如,6 月 28 日的出发日期将标记为 6 月 30 日,然后围绕到 7 月 1 日)。
- 在一日游的情况下,脚本不应失败(例如,9 月初的旅行,出发和返回发生在同一天,较小的绿点绘制在较大的红色标记上)。
用下面的代码生成这个图表很简单,很容易用一条从红到绿的线连接点,这两个点都发生在同一个月。任何人都可以以足以承担闰年和非闰年等的一般方式来帮助解决环绕的情况吗?
library("ggplot2")
# ----------------
# LOAD DATA
df <- read.table(text='id,dep_month,dep_day,ret_month,ret_day
c,1,5,1,16
v,2,1,2,6
a,3,28,3,31
z,4,9,4,11
y,4,25,5,3
f,6,28,7,7
w,8,19,8,29
b,9,9,9,9
k,9,29,10,6
n,11,20,12,3', header = TRUE,
sep = ',')
# ----------------
# DRAW YEAR CHART
p <- ggplot(data = df,
aes(x = dep_day,
y = dep_month
)
)
p <- p + theme_bw()
p <- p + geom_point(colour = 'red',
size = 6)
p <- p + geom_point(aes(x = ret_day,
y = ret_month
),
colour = 'green',
size = 4
)
p <- p + scale_x_continuous( breaks = c(1:31) )
p <- p + scale_y_reverse( breaks = c(1:12) )
p <- p + ylab("Month") + xlab("Day")
print(p)