python - 在 Python 中用多色线绘制时间序列
问题描述
这是我的数据集:
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")
任何帮助将非常感激!
解决方案
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)
推荐阅读
- python - 应用程序级静态文件在 Django 中加载,但不是项目级
- python - 如何改变 QBarSet 的形状?
- git - 如何设置“不安全”的 Git LFS 配置项?
- python - linux 目录权限检查和/或目录是否存在
- node.js - 使用命令将 npm 包的 prepatch 版本从 1.0.0-0 更新到 1.0.0-1
- r - 从 url 读取数据,fread 警告
- arrays - 在两个单词之间获取字符串的有效方法
- android - 绑定服务:BIND_AUTO_CREATE 标志文档
- javascript - localStorage 覆盖了我之前的表数据
- jquery - 如何在单击时将类添加到块中的一个元素并从另一个元素中删除相同的类?