import pandas as pd    
from datetime import datetime
import matplotlib.dates as dates
import matplotlib.pyplot as plt
from datetime import datetime
import matplotlib.dates as dates
import matplotlib.pyplot as plt
def
gantt_chart(df_phase):
    # Now convert them to matplotlib's internal
format...
    df_phase['Start Time'] =
pd.to_datetime(df_phase['Start Time'], format='%Y-%m-%d %H:%M:%S.%f')
    df_phase['End Time'] =
pd.to_datetime(df_phase['End Time'], format='%Y-%m-%d %H:%M:%S.%f')
    #Convert DF columns into lists, plt will
take all values in scalar or list
    sdate = df_phase['Start Time'].tolist()
    edate = df_phase['End Time'].tolist()
    plugin = df_phase['Plugin'].tolist()
    status = df_phase['Status'].tolist()
    color = []
    #Store colors for success and failure to differentiate 
    for i in range(0, len(status)):
        if status[i] == 'Success':
            color.append('green')
        else:
            color.append('red')
    #Convert time to Matplotlib number format
    edate, sdate = [dates.date2num(item) for item
in (edate, sdate)]
    ypos = range(len(plugin))
    fig, ax = plt.subplots()
    time_diff = edate - sdate
    # Plot the data, color is scalar or a list
    # All are in form of list
    ax.barh(ypos, time_diff, left=sdate,
linewidth = 0.5, height=0.8, align='center', color=color)
    plt.yticks(ypos, plugin)
    plt.xticks(rotation=-20)
    ax.axis('tight')
    # We need to tell matplotlib that these are
dates...
    ax.xaxis_date()
    plt.ylabel('Plugins', fontsize='medium',
stretch = 'normal')
    # bbox_inches='tight' will prevent cutting
of y-label
    fig.savefig(image_file,
bbox_inches='tight')
    plt.show()
data =
[['A', '2019-06-27 18:33:58.033', '2019-06-27 19:54:04.658', 'Success'], ['B',
'2019-06-27 19:54:04.957', '2019-06-27 19:58:14.570', 'Success'], ['C',
'2019-06-27 19:54:04.963', '2019-06-27 19:54:19.928', 'Failed']]
df_phase =
pd.DataFrame(data, columns = [Plugin, 'Start Time', 'End Time', 'Status'])
gantt_chart(df_phase)
 
No comments:
Post a Comment