def _data_dict_to_bokeh_chart_data(self, data):
labels = []<EOL>keys = set()<EOL>for date in data:<EOL><INDENT>for k in data[date]:<EOL><INDENT>keys.add(k)<EOL><DEDENT><DEDENT>out_data = {}<EOL>for k in keys:<EOL><INDENT>out_data[k] = []<EOL><DEDENT>for data_date, data_dict in sorted(data.items()):<EOL><INDENT>labels.append(data_date)<EOL>for k in out_data:<EOL><INDENT>if k in data_dict:<EOL><INDENT>out_data[k].append(data_dict[k])<EOL><DEDENT>else:<EOL><INDENT>out_data[k].append(<NUM_LIT:0>)<EOL><DEDENT><DEDENT><DEDENT>return out_data, labels<EOL>
Take a dictionary of data, as returned by the :py:class:`~.ProjectStats`
per_*_data properties, return a 2-tuple of data dict and x labels list
usable by bokeh.charts.

:param data: data dict from :py:class:`~.ProjectStats` property
:type data: dict
:return: 2-tuple of data dict, x labels list
:rtype: tuple