The data wrangling code to produce area plot leaves a lot of intermediate object floating around and are quite (unnecessarily) verbose.
My estimate is that the data wrangling code could be at least 40% lesser: lesser code -> higher maintainability
Specific objects to optimise:
g.accum for accum_global() function.
g.accum_personal for accum_personal() function.