【发布时间】:2020-09-16 07:41:28
【问题描述】:
我有一个带有日期时间索引的数据框:
A B
date
2020-05-04 0 0
2020-05-05 5 0
2020-05-07 2 0
2020-05-09 2 0
2020-05-18 -5 0
2020-05-19 -1 0
2020-05-20 0 0
2020-05-21 1 0
2020-05-22 0 0
2020-05-23 3 0
2020-05-24 1 1
2020-05-25 0 1
2020-05-26 4 1
2020-05-27 3 1
我想制作一个线图来随着时间的推移跟踪 A,并在 B 的值为 1 时将绘图的背景涂成红色。我已经实现了以下代码来制作图表:
from matplotlib import dates as mdates
from matplotlib.colors import ListedColormap
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
cmap = ListedColormap(['white','red'])
ax.plot(data['A'])
ax.set_xlabel('')
plt.xticks(rotation = 30)
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
ax.pcolorfast(ax.get_xlim(), ax.get_ylim(),
data['B'].values[np.newaxis],
cmap = cmap, alpha = 0.4)
plt.axhline(y = 0, color = 'black')
plt.tight_layout()
这给了我这个图表:
但红色区域错误地从 2020-05-21 而不是 2020-05-24 开始,并且它没有在数据框中的结束日期结束。如何更改我的代码来解决这个问题?
【问题讨论】:
-
我很难重现该问题。 cmap 是什么样子的? mdates 是 matplotlib.dates 吗?
-
mdates 是 matplotlib.dates 而 cmap 是 ListedColormap
标签: python pandas numpy matplotlib