J'ai essayé d'étendre my own answer on drawing Gantt Charts à un cas plus général. J'illustre un résultat partiel ici:Tracer un planificateur d'année dans R
Un certain nombre de voyages sont tracés sur ce tableau, avec les points rouges représentant les départs et les points verts un retour. Maintenant, voici mon défi:
- Je voudrais marquer tous les jours entre un départ et un retour avec un point gris, et laisser tous les autres intacts.
- Je voudrais que les points soient correctement entourés par les différentes longueurs de mois (par exemple, le départ du 28 juin marquerait les jours jusqu'au 30 juin et ensuite remonterait au 1er juillet).
- Le script ne doit pas échouer dans le cas d'un voyage d'une journée (par exemple, le voyage au début de septembre où le départ et le retour ont lieu le même jour et un point vert plus petit sur un marqueur rouge plus grand).
Il est trivial de produire ce graphique avec le code ci-dessous, et il serait facile de joindre les points avec une ligne du rouge au vert où les deux se produisent dans le même mois. Quelqu'un peut-il aider avec le cas d'un enveloppement d'une manière assez générale pour prendre aussi des années bissextiles et non-bissextiles, etc?
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)
Merci, @smu, qui est le plus élégant, beaucoup mieux que tous mes efforts. – gauden