from datetime import datetime as dt from matplotlib import pyplot as plt # einträge ohne kommentar sind von archive.org raw_data = [ #("", , , ), ("2011-08", 65, 0, 0), # ck ws1112, gesamtsumme ("2012-01", 73, 0, 0), # ck ss12, gesamtsumme ("2012-07", 73, 0, 0), # ck ws1213, gesamtsumme ("2013-01", 42, 31, 450), ("2013-02", 42, 31, 450), #ck ss13 ("2013-07", 42, 31, 0), ("2013-07", 42, 31, 0), #ck ws1314 ("2013-11", 42, 33.2, 0), ("2014-01", 42, 33.2, 0), ("2014-01", 42, 33.2, 0), #ck ss14 ("2014-04", 42, 33.2, 0), ("2014-06", 42, 33.2, 0), ("2014-11", 42, 33.2, 0), ("2015-01", 42, 33.2, 0), ("2015-01", 42, 33.2, 0), #ck ss15 ("2015-07", 42, 33.2, 0), #ck ws1516 (@2016-09) ("2015-08", 42, 33.2, 0), ("2015-09", 42, 33.2, 0), ("2016-05", 42, 38, 0), #ck ss16 (@2016-09) ("2016-07", 42, 38, 0), #ck ws 1617 (@2016-09) ("2016-12", 50, 38, 0), ("2017-03", 50, 38, 0), #ck ss17 ("2017-06", 50, 38, 0), #ck ws1718 ("2017-07", 50, 38, 0), ("2018-02", 90.2, 0, 0), #ck ss18, gesamtsumme ("2019-05", 60, 40.4, 0), ] data = [] base_date = dt(year=1,month=1,day=1) for raw_dt, studw, ticket, sem in raw_data: date = dt.strptime(raw_dt, "%Y-%m") data.append((date, studw, ticket, sem, (date-base_date).days)) # plt.plot_date(date, (studw+ticket), xdate=True) dates, studw, tickets, sem, day_diff = zip(*data) #plt.plot_date(day_diff, studw, xdate=True, linestyle="solid",label="studentenwerksbeitrag") #plt.plot_date(day_diff, tickets, xdate=True, linestyle="solid", label="semesterticket", bottom=studw) #plt.plot_date(day_diff, sem, xdate=True) #plt.show() plt.stackplot(dates, (tickets, studw), labels=("semesterticket","studentenwerksbeitrag")) plt.legend(loc="upper left") plt.savefig("semesterbeiträge.png")