python - 根据列值绘制累积值 - matplotlib/python
问题描述
目标是根据具有 3 列的数据框绘制每个模型的累积值:
约会时间 | 模型 | cum_value |
---|---|---|
2021-01-12 | 一个 | 10 |
2021-01-12 | 一个 | 20 |
2021-01-12 | 乙 | 50 |
2021-01-12 | 乙 | 70 |
结果应该是一个折线图,每个模型 A 和 B 都有一条线(在图例中提到)x 轴应该是日期,y 轴应该是cum_values
到目前为止我试过这个
data.plot(kind=line,x='date_time', y='cum_values)
我得到了正确的轴但是线条混乱了我想为每个模型拆分数据框但是必须有一种方法可以在不拆分表格的情况下进行绘图
希望你能帮忙!
解决方案
您应该使用seaborn.lineplot
和利用列hue
的参数'model'
:
sns.lineplot(data = df, x = 'date_time', y = 'cum_value', hue = 'model')
代码示例:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
df = pd.DataFrame({'date_time': np.repeat(pd.date_range(start = '2021-01-01', end = '2021-01-10', freq = 'D'), 2)})
df['model'] = len(df)//2*['A', 'B']
df['cum_value'] = np.random.randint(0, 100, len(df))
df = df.groupby(by = ['model', 'date_time']).sum().groupby(level = 0).cumsum().reset_index()
fig, ax = plt.subplots()
sns.lineplot(ax = ax, data = df, x = 'date_time', y = 'cum_value', hue = 'model')
plt.show()
推荐阅读
- git - 在所有分支上触发 GitHub Actions 工作流,除非相同(合并后)?
- android - 任何用于从锁定屏幕/主屏幕控制 Android 音频的 Titanium 解决方案?
- r - 广义加法模型。根据我放的 K 尺寸,我得到不同的结果
- amazon-web-services - 构建识别用户代理的工具
- nuget - 从 NuPkg 读取 NuSpec
- django - Django ALLOWED_HOSTS 中的 0.0.0.0 是否存在安全风险?
- reactjs - ReactJS,Formik - 验证字段,将值与另一个进行比较
- sql-server - 附件文件无效 - SQL Server 2014
- vim - 在可视模式下运行过滤器 (!) 命令
- c# - Why is vbs able to find the INSTALLLOCATION when C# using both DTF and MSI API cannot?