我有一个这样的字典,想要可视化某个流媒体的在线时间。
{1: ['2018-09-20 20:40:50', '2018-09-20 21:11:14'], 2: ['2018-09-20 12:45:44', '2018-09-20 13:22:24']}
我做了一张漂亮的画,向您展示我需要哪种图表。
由于我是python的初学者,所以我不知道如何用matplot进行绘制。任何帮助将不胜感激。
答案 0 :(得分:0)
您想要绘制的内容似乎类似于甘特图。 您可以在this link
上看到有关使用matplot绘制甘特图的绝佳示例答案 1 :(得分:0)
这里是一个例子。甘特图的技巧是计算原点和您希望其发生的时间之间的偏移。参见下面的代码并提供一些注释。
import datetime
from matplotlib import pyplot as plt
data = {1: ['2018-09-20 20:40:50', '2018-09-20 21:11:14'], \
2: ['2018-09-20 12:45:44', '2018-09-20 13:22:24']}
fig, ax = plt.subplots() # open figure; create axis
ylabels = [] # extract the dates
yticks = [] # track the position on the y-axis
for k, v in data.items():
# extract the time > see python docs for meaning of the symbols
times = [datetime.datetime.strptime(i, '%Y-%m-%d %H:%M:%S') for i in v]
offset= times[0].hour # offset from the left
delta = times[1].hour - times[0].hour # compute stream time
ax.barh(k, delta, left = offset, align = 'center') # plot
ylabels.append(v[0].split(' ')[0]) # extract date
yticks.append(k)
# format figure
ax.set(**dict(xlabel = 'Time[hour]', xlim = (0, 24), \
yticks = yticks, yticklabels = ylabels))
fig.show()
答案 2 :(得分:0)
Plotly如果您不仅限于Matplotlib,还可以使用交互式甘特图。
import plotly.plotly as py
import plotly.figure_factory as ff
df = [dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28'),
dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15'),
dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30')]
fig = ff.create_gantt(df)
py.iplot(fig, filename='gantt-simple-gantt-chart', world_readable=True)