我不知道这是否可以通过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轴将是时间。在适用的情况下(可能有第二个句点也可能不是第二个句点),每一行的每一行都有(虚线)水平条。
答案 0 :(得分:2)
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)
编辑
要将任务分组在一起,请使用-
fig = ff.create_gantt(df_full, group_tasks=True)
py.iplot(fig, filename='gantt-group-tasks-together', world_readable=True)
答案 2 :(得分:0)
您实际上可以在 Jupyter Notebook 中集成基于 javascript 的时间线(具有它提供的所有灵活性)。我写了一个解释here。