Python 在一个图表上绘制两个绘图后,找不到标签为“图例错误”的句柄

Python 在一个图表上绘制两个绘图后,找不到标签为“图例错误”的句柄,python,pandas,matplotlib,Python,Pandas,Matplotlib,我正在逐月绘制一些功能,并突出显示其中的一些功能。在我添加突出显示之前,图例可以自动显示,但现在它返回未找到标签的句柄以放入图例中错误 示例数据 df = pd.DataFrame(np.random.randn(10, 4), columns=list('ABCD')) highlight = ['A', 'B'] 我猜在一张图表上绘制两个图会导致这种情况,但我不知道如何修复它。我不想手动指定图例。只需切换plt.plot()语句的顺序,并明确声明图例项,如下所示: df = pd.Dat

我正在逐月绘制一些功能,并突出显示其中的一些功能。在我添加突出显示之前,图例可以自动显示,但现在它返回
未找到标签的句柄以放入图例中
错误

示例数据

df = pd.DataFrame(np.random.randn(10, 4), columns=list('ABCD'))
highlight = ['A', 'B']


我猜在一张图表上绘制两个图会导致这种情况,但我不知道如何修复它。我不想手动指定图例。

只需切换plt.plot()语句的顺序,并明确声明图例项,如下所示:

df = pd.DataFrame(np.random.randn(10, 4), columns=list('ABCD'))
highlight = ['A', 'B']

fig, ax = plt.subplots(figsize=(15, 5))
plt.plot(df.loc[:, df.columns.isin(highlight)])
plt.plot(df.loc[:, ~df.columns.isin(highlight)], c='gray', alpha=0.5)
months = pd.date_range('2019-04-01','2019-09-01', freq='MS').strftime("%Y-%m").tolist()
plt.legend(list('ABCD'),loc='center left', bbox_to_anchor=(1.0, 0.5))
z = ax.set_xticklabels(months, rotation=45)
plt.show()

  • 使用而不是
    plt.plot
    • 这可确保列标题作为标签正确分配到正确的行
    • 它返回一个或一个
      numpy.ndarray
  • 本例使用的是熊猫1.2.3版
将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
ax=df.loc[:,df.columns.isin(突出显示)].plot(图大小=(15,5))
df.loc[:,~df.columns.isin(突出显示)].plot(c='gray',alpha=0.5,ax=ax)
plt.图例(title='column labels',loc='center left',bbox_to_anchor=(1.0,0.5))
plt.show()

df = pd.DataFrame(np.random.randn(10, 4), columns=list('ABCD'))
highlight = ['A', 'B']

fig, ax = plt.subplots(figsize=(15, 5))
plt.plot(df.loc[:, df.columns.isin(highlight)])
plt.plot(df.loc[:, ~df.columns.isin(highlight)], c='gray', alpha=0.5)
months = pd.date_range('2019-04-01','2019-09-01', freq='MS').strftime("%Y-%m").tolist()
plt.legend(list('ABCD'),loc='center left', bbox_to_anchor=(1.0, 0.5))
z = ax.set_xticklabels(months, rotation=45)
plt.show()