In [67]:
%matplotlib inline
import matplotlib.pyplot as plt
from collections import defaultdict
class SkillDict(dict):
skills = ['project design',
'data wrangling',
'databases',
'data science toolkit',
'machine learning',
'statistics',
'python',
'htmlcssjavascriptandstuff',
'presentation',
'storytelling',
'visualization',
'swagger']
def __init__(self):
for skill in self.skills:
self[skill] = 0
def __setitem__(self, key, value):
if key not in self.skills:
msg = "%s is not one of your skills!" % key
raise KeyError(msg)
if not isinstance(value, (int, long, float)) or value < 0:
msg = "Please rate yourself with a positive number (not %s)" % value
raise ValueError(msg)
super(SkillDict, self).__setitem__(key, value)
skills = defaultdict(SkillDict)
def plot_skills(skills):
max_skill = 10
max_label = len(SkillDict.skills) + 1
for week, weekly_skills in sorted(skills.items()):
labels = ['']
grades = [0]
for skill, grade in sorted(weekly_skills.items()):
labels.append(skill)
grades.append(grade)
if grade > max_skill:
max_skill = grade
labels.append('')
grades.append(0)
plt.plot(grades)
plt.xlim(-.0, max_label)
plt.ylim(-.0, max_skill + 0.5)
locs, labels = plt.xticks(range(max_label), labels)
plt.setp(labels, rotation=90)
In [68]:
#week 1
week = 1
skills[week]['project design']=2
skills[week]['data wrangling']=3
skills[week]['databases']=1
skills[week]['data science toolkit']=3
skills[week]['machine learning']=4
skills[week]['statistics']=5
skills[week]['python']=6
skills[week]['htmlcssjavascriptandstuff']=2
skills[week]['presentation']=2
skills[week]['storytelling']=3
skills[week]['visualization']=1
skills[week]['swagger']=4
plot_skills(skills)
In [69]:
#week 2
week = 2
skills[week]['project design']=2
skills[week]['data wrangling']=3
skills[week]['databases']=1
skills[week]['data science toolkit']=3
skills[week]['machine learning']=4
skills[week]['statistics']=6
skills[week]['python']=7
skills[week]['htmlcssjavascriptandstuff']=2
skills[week]['presentation']=3
skills[week]['storytelling']=3
skills[week]['visualization']=4
skills[week]['swagger']=10
plot_skills(skills)