In [ ]:
%pylab inline
In [ ]:
!pip3 install brewer2mpl
In [ ]:
import pandas
In [ ]:
import brewer2mpl
brewer_colors = brewer2mpl.get_map('Pastel1', 'Qualitative', 7).mpl_colors
In [ ]:
log = pandas.read_csv('.tasks-log.csv', sep=';', parse_dates=[4], index_col='start')
In [ ]:
grp = log.groupby('project').sum().duration
In [ ]:
pie(grp, labels=grp.index, autopct='%1.1f%%', colors=brewer_colors, )
plt.axis('equal')
In [ ]:
grouper = pandas.TimeGrouper('1D')
In [ ]:
grp = log.groupby([lambda x: x.date, 'project']).sum()
In [ ]:
projects = log.project.unique()
def make_index(days = 7):
global dates
dates = [datetime.date.today()-
datetime.timedelta(days=x)
for x in range(days)
]
return[[date, project]
for project in projects
for date in dates
]
index_frame = pandas.DataFrame(make_index())
index_frame.columns = ['start', 'project']
index_frame.set_index(['start', 'project'], inplace=True)
In [ ]:
grp = grp.reindex_axis(index_frame.index, copy=False)
grp.fillna(0, inplace=True)
In [ ]:
xax = plt.axes().xaxis
offset = zeros_like(dates)
for index, project in enumerate(projects):
single = grp.xs(project, level='project').duration
single /= 60
bar(single.index, single,
color=[brewer_colors[index]],
label=project,
bottom=offset,
align='center')
offset += single
legend(loc='best')
ylabel('minutes')
xlabel('date')
xax.set_ticks(dates)
xax.set_ticklabels([date.strftime("%m-%d")
for date in dates])
for tl in xax.get_ticklabels():
tl.set_fontsize(10)
tl.set_rotation(30)
show()
In [ ]: