我正尝试在 Python 中创建一个简单的折线图,对于每个客户,我都希望显示一条基于值(y轴)和日期(x-轴)。标记颜色应基于颜色字段。
请在下面查看示例数据和预期输出(对不起,我的涂鸦)
我正尝试在 Python 中创建一个简单的折线图,对于每个客户,我都希望显示一条基于值(y轴)和日期(x-轴)。标记颜色应基于颜色字段。
请在下面查看示例数据和预期输出(对不起,我的涂鸦)
一种简单的方法是首先使用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,color=df_cus.Color,zorder=1)
我使用zorder
来确保散点图始终位于黑线的顶部。