Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import datetime as dt
- import matplotlib.pyplot as plt
- import matplotlib.font_manager as font_manager
- import matplotlib.dates as dates
- from matplotlib.dates import WEEKLY, MONTHLY, DateFormatter, rrulewrapper, RRuleLocator
- import numpy as np
- from tkinter import *
- def create_date(date):
- d, m, y = [int(s) for s in date.split('-')]
- return dates.date2num(dt.datetime(y, m, d))
- def create_diagramm_gantt(event):
- name_characters, custom_dates = [],[]
- for people in characters: name_characters.append(people["Name"]); custom_dates.append([create_date(people["Begin_date"]),create_date(people["End_date"])])
- number_characters = len(name_characters)
- position, date_of_task = np.arange(0.5,number_characters*0.5+0.5,0.5),{}
- for i, name in enumerate(name_characters): date_of_task[name] = custom_dates[i]
- figure = plt.figure(figsize=(20,8))
- ax = figure.add_subplot(111)
- for i in range(number_characters):
- start_date,end_date = date_of_task[name_characters[i]]
- ax.barh((i*0.5)+0.5, end_date - start_date, left=start_date, height=0.3, align='center', edgecolor='lightgreen', color='lightgreen', alpha = 0.8)
- _, labelsy = plt.yticks(position,name_characters)
- plt.setp(labelsy, fontsize = 14)
- ax.set_ylim(ymin = -0.1, ymax = number_characters*0.5+0.5)
- ax.grid(color = 'g', linestyle = ':')
- ax.xaxis_date()
- location = RRuleLocator(rrulewrapper(WEEKLY, interval=1))
- formatter = DateFormatter("%d-%b '%y")
- ax.xaxis.set_major_locator(location)
- ax.xaxis.set_major_formatter(formatter)
- plt.setp(ax.get_xticklabels(), rotation=30, fontsize=10)
- font = font_manager.FontProperties(size='small')
- https://pastebin.com/BQtrqNkn
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement