【问题标题】:Plotting time series with multicolor line in Python在 Python 中用多色线绘制时间序列
【发布时间】:2020-10-02 09:12:52
【问题描述】:

这是我的数据集:

import pandas as pd
from datetime import datetime
import numpy as np

date_rng = pd.date_range(start='2020-07-01', end='2020-07-20', freq='d')
df = pd.DataFrame(date_rng, columns=['date'])
df['data'] = np.random.randint(0,100,size=(len(date_rng))).cumsum()
df['Signal'] = [0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1] 

我想根据“信号”列为线条着色,例如如果 Signal = 0,将线涂成蓝色,如果 Signal = 1,将线涂成橙色。

我使用 seaborn 尝试了以下操作,这不是我想要的。我想要一条线有两种颜色。

sns.lineplot(data=df, x="date", y="data", hue="Signal")

任何帮助将不胜感激!

【问题讨论】:

标签: python plot seaborn


【解决方案1】:
import pandas as pd
from datetime import datetime
import numpy as np

date_rng = pd.date_range(start='2020-07-01', end='2020-07-20', freq='d')
df = pd.DataFrame(date_rng, columns=['date'])
df['data'] = np.random.randint(0,100,size=(len(date_rng))).cumsum()
df['Signal'] = [0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1]

sig_0 = np.ma.masked_where(df['Signal'] ==0, df['data'])
sig_1 = np.ma.masked_where(df['Signal'] ==1, df['data'])
plt.plot(df['date'], sig_0, df['date'], sig_1)

这将为您提供以下情节。

间隙对应于信号值从 0 到 1 或从 1 到 0 移动的点。 您可以通过添加额外的绘图命令来用其他颜色填充这些空白

plt.plot(df['date'], df['data'], color='grey')
plt.plot(df['date'], sig_0, df['date'], sig_1)

结果图

【讨论】:

    猜你喜欢
    • 2016-09-13
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 2021-02-28
    • 2018-09-20
    • 2018-08-24
    • 1970-01-01
    • 2020-11-08
    相关资源
    最近更新 更多