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)