Как построить такую ​​диаграмму в matplot / python? - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть словарь, подобный этому, и я хочу визуализировать время онлайн определенного стримера.

{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']}

Я сделал необычный розыгрыш, чтобы показать вам, какая диаграмма мне нужна.

diagram

Так как я полностью новичок в Python, я не могу понять, как построить это с помощью matplot.Любая помощь будет оценена.

Ответы [ 3 ]

0 голосов
/ 14 декабря 2018

Вот пример.Хитрость с диаграммой Ганта состоит в том, чтобы вычислить смещение между источником и временем, когда вы хотите, чтобы это произошло.Ниже приведен код с некоторыми комментариями.

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()

enter image description here

0 голосов
/ 09 февраля 2019

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)

Вывод

0 голосов
/ 13 декабря 2018

То, что вы хотите построить, похоже на диаграмму Ганта.Вы можете увидеть отличный пример построения графиков Ганта с помощью matplot на по этой ссылке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...