i'm trying to make a stacked plot bar. Problem is I have to do it in for loop, and I don't know how to manage the "bottom" parameter in the loop.
fig, ax = plt.subplots(1, figsize=(20,5), dpi=200, sharex=True)
fig.suptitle('titre',fontsize=14)
n = 7
color = iter(cm.rainbow(np.linspace(0, 1, n)))
car_list = ['dangel','tepee', 'ranger', 'duster', 'metro']
for i in car_list :
c = next(color)
ax.bar(globals()[f"df_{i}"]['date debut'], globals()[f"df_{i}"]['durée'], color=c, label=i, width=10.0, bottom=???)
Don't know if it's matter but the dataframes uses the same timeline off course, but some times for a specific date, there is no value, so bottom could be zero (or nothing at all if there is no row in this date ?).
EDIT : here some sample of the dataframes (with a lot less data in time in order not to flood the topic). Note : duster is really more recent, so dates are not match with others dataframes.
df_dangel :
vehicule date debut date fin durée
349 Dangel 4x4 prio. terrain 2019-01-10 09:00:00 2019-01-10 16:00:00 7.0
350 Dangel 4x4 prio. terrain 2019-01-14 14:00:00 2019-01-14 15:30:00 1.5
351 Dangel 4x4 prio. terrain 2019-01-15 09:00:00 2019-01-15 12:00:00 3.0
352 Dangel 4x4 prio. terrain 2019-01-15 13:30:00 2019-01-15 17:00:00 3.5
353 Dangel 4x4 prio. terrain 2019-01-16 08:00:00 2019-01-16 20:00:00 12.0
354 Dangel 4x4 prio. terrain 2019-01-17 08:00:00 2019-01-17 17:00:00 9.0
355 Dangel 4x4 prio. terrain 2019-01-18 08:00:00 2019-01-18 20:00:00 12.0
356 Dangel 4x4 prio. terrain 2019-01-22 08:00:00 2019-01-22 20:00:00 12.0
df_tepee :
vehicule date debut date fin durée
1668 Tepee 2019-01-17 11:00:00 2019-01-17 16:00:00 5.0
1669 Tepee 2019-01-17 16:00:00 2019-01-18 20:00:00 28.0
1670 Tepee 2019-01-22 11:00:00 2019-01-22 18:00:00 7.0
1671 Tepee 2019-01-23 08:00:00 2019-01-23 15:00:00 7.0
1672 Tepee 2019-01-24 08:00:00 2019-01-25 20:00:00 36.0
1673 Tepee 2019-01-29 08:00:00 2019-01-29 18:30:00 10.5
1674 Tepee 2019-01-31 08:30:00 2019-01-31 09:30:00 1.0
1675 Tepee 2019-01-31 09:30:00 2019-01-31 11:00:00 1.5
df_ranger :
vehicule date debut date fin durée
1037 Ranger 4x4 prio. terrain 2019-01-08 10:00:00 2019-01-08 12:00:00 2.0
1038 Ranger 4x4 prio. terrain 2019-01-11 15:00:00 2019-01-11 18:00:00 3.0
1039 Ranger 4x4 prio. terrain 2019-01-14 08:00:00 2019-01-14 20:00:00 12.0
1040 Ranger 4x4 prio. terrain 2019-01-16 08:00:00 2019-01-16 13:00:00 5.0
1041 Ranger 4x4 prio. terrain 2019-01-22 08:00:00 2019-01-22 16:00:00 8.0
1042 Ranger 4x4 prio. terrain 2019-01-23 08:00:00 2019-01-23 15:00:00 7.0
1043 Ranger 4x4 prio. terrain 2019-01-24 08:00:00 2019-01-24 17:30:00 9.5
1044 Ranger 4x4 prio. terrain 2019-01-29 08:00:00 2019-01-29 20:00:00 12.0
df_duster :
vehicule date debut date fin durée
1349 Duster 4x4 prio. terrain 2021-07-08 08:00:00 2021-07-12 09:00:00 97.0
1350 Duster 4x4 prio. terrain 2021-07-15 08:00:00 2021-07-16 20:00:00 36.0
1351 Duster 4x4 prio. terrain 2021-07-28 08:00:00 2021-07-28 20:00:00 12.0
1352 Duster 4x4 prio. terrain 2021-08-30 08:00:00 2021-09-03 20:00:00 108.0
1353 Duster 4x4 prio. terrain 2021-09-06 08:00:00 2021-09-06 20:00:00 12.0
1354 Duster 4x4 prio. terrain 2021-09-14 17:00:00 2021-09-16 20:00:00 51.0
1355 Duster 4x4 prio. terrain 2021-09-20 08:00:00 2021-09-20 20:00:00 12.0
1356 Duster 4x4 prio. terrain 2021-09-23 08:00:00 2021-09-23 19:00:00 11.0
df_metro :
vehicule date debut date fin durée
2265 Métrovélo 2019-01-11 09:30:00 2019-01-11 13:30:00 4.0
2266 Métrovélo 2019-01-18 10:00:00 2019-01-18 14:00:00 4.0
2267 Métrovélo 2019-01-22 12:30:00 2019-01-22 14:00:00 1.5
2268 Métrovélo 2019-01-25 16:00:00 2019-01-25 19:00:00 3.0
2269 Métrovélo 2019-02-08 16:30:00 2019-02-08 19:30:00 3.0
2270 Métrovélo 2019-02-15 16:30:00 2019-02-15 19:00:00 2.5
2271 Métrovélo 2019-03-07 12:00:00 2019-03-07 14:00:00 2.0
2272 Métrovélo 2019-03-08 16:30:00 2019-03-08 18:30:00 2.0
First column is the the remained indice from the "all data file" which I'm cutting to clarify dataframes.
And without the bottom parameter, this is what I have :