尝试用 20 多个系列绘制堆积面积图

Trying to draw an stacked area plot with 20+ series

我有一个大约 1300 行的数据集,用于跟踪每个用户注册月、每个月的每月登录数,我正在尝试绘制堆积面积图,每个 series/trace 是用户注册月份。

数据集如下所示:

------------------------------------------------------------------------------
user signup month | login month | monthly login count | cumulative login count

------------------------------------------------------------------------------
2016-01           | 2016-01     |  50                 | 50
2016-01           | 2016-02     |  25                 | 75
2016-01           | 2016-03     |  15                 | 90
...
2019-05           | 2019-05     | 1000                | 1000
2019-05           | 2019-06     | 500                 | 1500
------------------------------------------------------------------------------

问题是当我尝试在我的 python 笔记本中绘制图表时,使用

x=data['login_month']
y=data['cumulative_login_count']

plt.figure(figsize=(20,10))
plt.stackplot(x,y, labels=['user_signup_month'])
plt.legend(loc='upper left')
plt.show()

它显​​示为一个系列,而不是一个系列每个 个不同的用户注册月份。

预期结果示例:

我google过的例子都是手动输入系列数据的,例如:

data={'A': [-378, -2347, 509, 987, 513], 
                        'B': [-527, -2599, 765, 533, 670], 
                        'C': [-2343, -2273, 2093, 2197, 1990], 
                        'D': [-1845, -1853, 3325, 1306, 2160]}

这对我来说是不切实际和不可持续的。

我对 python 可视化也很陌生,所以我不太确定哪些搜索词最有效,但我发现 "python matlibplot multiple series traces stackedplot" 的结果仅参考上述内容手动输入系列数据的解决方案

您可以而且应该始终尝试举例说明您的数据。它不需要是完整的,但要有代表性。例如:

    signup    login  log_count
0  2016-01  2016-02         16
1  2016-01  2016-03         11
2  2016-01  2016-04         26
3  2016-01  2016-05         29
4  2016-02  2016-03         25
5  2016-02  2016-04         11
6  2016-02  2016-05         11
7  2016-03  2016-04         28
8  2016-03  2016-05         23
9  2016-04  2016-05         12

现在,有了这个玩具数据,我们可以通过以下方式制作 area/stack 情节:

(df.pivot(index='login', 
          columns='signup', 
          values='log_count')
   .plot.area(figsize=(10,6))
)

输出: