首页 > 解决方案 > 根据列值绘制累积值 - 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)

我得到了正确的轴但是线条混乱了我想为每个模型拆分数据框但是必须有一种方法可以在不拆分表格的情况下进行绘图

希望你能帮忙!

标签: pythonpandasdataframematplotlibseaborn

解决方案


您应该使用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()

在此处输入图像描述


推荐阅读