Why not use the object-oriented way of creating plots with matplotlib?
for (site, v) in weather_data.items(): f, ax = plt.subplots() for day, value in v["Avg"].items(): ax.plot(value[0], value[1], label = site) ax.legend()