Python-基于另一列的动态折线图标记颜色

时间:2019-11-15 12:43:03

标签: python matplotlib colors linechart markers

我正尝试在 Python 中创建一个简单的折线图,对于每个客户,我都希望显示一条基于值(y轴)和日期(x-轴)。标记颜色应基于颜色字段。

请在下面查看示例数据和预期输出(对不起,我的涂鸦)

Sample Data Here

Expected Output

1 个答案:

答案 0 :(得分:0)

一种简单的方法是首先使用plot函数绘制线条(例如黑色),然后使用scatter绘制彩色标记。这里我展示一个例子:

我生成的数据与您的数据类似,如下所示(我想您将数据存储在pandas数据框中):

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

columns = ['CustID', 'Date', 'Value', 'Color']
data = []

np.random.seed(42)
for cus_id in np.arange(1, 5):
    for date in ['jan', 'feb', 'mar', 'apr']:
        data.append([cus_id, date, np.random.randint(20,35),
                     np.random.choice(['red', 'blue', 'green'])])

df = pd.DataFrame(data=data, columns=columns)

此时,df包含this table

最后,绘制您的折线图:

fig, ax = plt.subplots(1)
for _, df_cus in df.groupby('CustID'):
    ax.plot(df_cus.Date, df_cus.Value, color='black', zorder=0)
    ax.scatter(df_cus.Date, df_cus.Value, color=df_cus.Color, zorder=1)

Here's the output

我使用zorder来确保散点图始终位于黑线的顶部。