在 matplotlib 中绘制图形时出现 KeyError

KeyError while plotting a graph in matplotlib

我正在尝试为下面的数据框绘制一个简单的图表

  indeces      Zeitstempel     Ergebnis
0   382    16.04.2020 16:12:07  PASS
1   383    16.04.2020 16:13:07  PASS
2   392    16.04.2020 16:13:20  FAIL
3   382    16.04.2020 16:13:22  PASS
4   383    16.04.2020 16:14:22  PASS

它有三列。 x 轴应该是 Zeitstempel,y 轴应该是 indeces,我还想在 Ergebnis 列中指定值(可能颜色编码绿色表示 PASS,红色表示 FAIL,灰色表示 BLOCKED) 至于哪个索引在什么时候通过或失败或阻塞。实际数据框有 1172 行 × 3 列值,但在上面我只提到了几个。 我正在尝试的代码如下所示,但不知何故我无法弄清楚如何根据需要绘制所有 3 个。

times = pd.date_range('2020-04-16 04:12 AM', '2020-04-16 11:00 PM', freq='1H')

fig, ax = plt.subplots(1)
fig.autofmt_xdate()

df.plot(kind='line',x='times',y='Index',ax=ax)
xfmt = mdates.DateFormatter('%d-%m-%y %H:%M')
ax.xaxis.set_major_formatter(xfmt)
ax = plt.gca()

plt.show()

times 有 Zeitstempel 值,Index 有存储在其中的索引值。这给了我 KeyError。有没有更简单的方法来做到这一点?我是 matplotlib 的新手,我 运行 无能为力。请提出建议。

看看我发布的答案:。它显示了如何使用 np.genfromtxt() 从 csv 文件加载数据,然后生成所需的颜色编码图(类似于您想要执行的操作)。如果您可以将 Pandas 数据映射到 NumPy recarray,则其余过程仍将相同。

我不熟悉Pandas,所以只能提供伪代码。它看起来像这样。将此调用替换为 np.genfromtxt()(从文件读取 csv 数据):

csv_arr = np.genfromtxt(csv,    # Data to be read
                        ...) 

用下面几行创建recarray。 (为了简化起见,我重复使用了 csv_arr 名称。请随意使用您喜欢的任何名称):

csv_dt = np.dtype([ ('indeces', '<i4'), ('Zeitstempel', 'O'), ('Ergebnis', '<U7') ])
csv_arr = np.empty(shape=(nrows,), dtype=csv_dt)
csv_arr['Zeitstempel'] = # pandas Zeitstempel data goes here as a numpy array
csv_arr['indeces'] = # pandas indeces data goes here as a numpy array 
csv_arr['Ergebnis'] = # pandas Ergebnis data goes here as a numpy array

将 Pandas 数据添加到 csv_arr 后,其余代码应该相同,并创建与参考答案中所示相同的图。祝你好运。