尝试用 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))
)
输出:
我有一个大约 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))
)
输出: