在时间轴上绘制大熊猫的时间段

时间:2018-11-30 18:05:17

标签: python pandas matplotlib visualization seaborn

我不知道这是否可以通过Matplotlib或Anaconda发行版中的其他可视化工具来实现。

我知道如何使用JavaScript做到这一点,也许可以走那条路,但是我想知道在Jupyter笔记本中是否有办法做到这一点。对于要绘制的每一行数据,我都有多个时间段,分别带有开始和结束日期时间。我的目标实际上是在任何行中都没有时间段的地方找到差距。

这里是一个示例:http://visjs.org/examples/timeline/other/groupsPerformance.html

所有行都有至少一个时间段,但有些行有多个时间段。有没有办法在matplotlib或seaborn中做到这一点?

针对此类可视化或示例的指向特定文档的指针就足够了。

示例数据框:

    id           start1        end1      start2        end2
0  Bob       2018-11-29  2018-11-30  2018-12-01  2018-12-31
1  James     2018-10-19  2018-10-31         NaT         NaT
2  Jane      2018-04-05  2018-07-12  2018-11-29  2018-11-30

因此,Y轴将包含id字段,而X轴将是时间。在适用的情况下(可能有第二个句点也可能不是第二个句点),每一行的每一行都有(虚线)水平条。

3 个答案:

答案 0 :(得分:2)

matplotlib中的

broken_barh()似乎很符合您的需求。我会提供更多详细信息,但是为此,我需要一些示例数据。

答案 1 :(得分:2)

如果您愿意使用plotly,这可以使您更接近-

df_full = df[['id','start1','end1']].rename(columns={'id':'Task','start1':'Start','end1':'Finish'}).append(
    df[['id','start2','end2']].rename(columns={'id':'Task','start2':'Start','end2':'Finish'}),sort=False).reset_index()

import plotly.plotly as py
import plotly.figure_factory as ff

fig = ff.create_gantt(df_full)
py.iplot(fig, filename='gantt-simple-gantt-chart', world_readable=True)

enter image description here

编辑

要将任务分组在一起,请使用-

fig = ff.create_gantt(df_full, group_tasks=True)
py.iplot(fig, filename='gantt-group-tasks-together', world_readable=True)

enter image description here

答案 2 :(得分:0)

您实际上可以在 Jupyter Notebook 中集成基于 javascript 的时间线(具有它提供的所有灵活性)。我写了一个解释here