• 五、堆叠图

    五、堆叠图

    在这篇 Matplotlib 数据可视化教程中,我们要介绍如何创建堆叠图。 堆叠图用于显示『部分对整体』随时间的关系。 堆叠图基本上类似于饼图,只是随时间而变化。

    让我们考虑一个情况,我们一天有 24 小时,我们想看看我们如何花费时间。 我们将我们的活动分为:睡觉,吃饭,工作和玩耍。

    我们假设我们要在 5 天的时间内跟踪它,因此我们的初始数据将如下所示:

    1. import matplotlib.pyplot as plt
    2. days = [1,2,3,4,5]
    3. sleeping = [7,8,6,11,7]
    4. eating = [2,3,4,3,2]
    5. working = [7,8,7,2,2]
    6. playing = [8,5,7,8,13]

    因此,我们的x轴将包括day变量,即 1, 2, 3, 4 和 5。然后,日期的各个成分保存在它们各自的活动中。 像这样绘制它们:

    1. plt.stackplot(days, sleeping,eating,working,playing, colors=['m','c','r','k'])
    2. plt.xlabel('x')
    3. plt.ylabel('y')
    4. plt.title('Interesting Graph\nCheck it out')
    5. plt.show()

    五、堆叠图 - 图1

    在这里,我们可以至少在颜色上看到,我们如何花费我们的时间。 问题是,如果不回头看代码,我们不知道什么颜色是什么。 下一个问题是,对于多边形来说,我们实际上不能为数据添加『标签』。 因此,在任何不止是线条,带有像这样的填充或堆叠图的地方,我们不能以固有方式标记出特定的部分。 这不应该阻止程序员。 我们可以解决这个问题:

    1. import matplotlib.pyplot as plt
    2. days = [1,2,3,4,5]
    3. sleeping = [7,8,6,11,7]
    4. eating = [2,3,4,3,2]
    5. working = [7,8,7,2,2]
    6. playing = [8,5,7,8,13]
    7. plt.plot([],[],color='m', label='Sleeping', linewidth=5)
    8. plt.plot([],[],color='c', label='Eating', linewidth=5)
    9. plt.plot([],[],color='r', label='Working', linewidth=5)
    10. plt.plot([],[],color='k', label='Playing', linewidth=5)
    11. plt.stackplot(days, sleeping,eating,working,playing, colors=['m','c','r','k'])
    12. plt.xlabel('x')
    13. plt.ylabel('y')
    14. plt.title('Interesting Graph\nCheck it out')
    15. plt.legend()
    16. plt.show()

    五、堆叠图 - 图2

    我们在这里做的是画一些空行,给予它们符合我们的堆叠图的相同颜色,和正确标签。 我们还使它们线宽为 5,使线条在图例中显得较宽。 现在,我们可以很容易地看到,我们如何花费我们的时间。