TypeError:inner()为关键字参数' ax'

时间:2017-12-09 09:00:13

标签: matplotlib

我尝试运行以下代码:

代码:

df1=pd.read_excel('F:/MRCS_New_struture/2. EHM_Vanna/2015 Reports/Statistic_Env.xlsx', sheetname='Daitom (2)', header=0, index_col='Year')


CaAB=df1.iloc[:5,17:34]; print CaAB

a=[2007, 2008, 2011, 2013, 2015]
b=[100,200,300,500,22.33]

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

plt.plot(a, b, 'go-', label='line 1', linewidth=2, ax=ax)
plt.xticks(a, map(str,a))
CaAB.plot(kind='bar', ax=ax)

并且,它生成了错误(TypeError:inner()获得了关键字参数' ax')的多个值。我的代码有什么问题?

1 个答案:

答案 0 :(得分:10)

ax不是plt.plot()的有效参数。原因是plt.plot()将调用当前活动轴的plot方法,与plt.gca().plot()相同。因此轴已经由实例本身给出。再次提供它作为关键字参数没有任何意义,最终产生错误。

解决方案:不要将ax用作plt.plot()的参数。取而代之的是,

  1. 调用plt.plot(...)绘制当前轴。使用plt.sca()
  2. 设置当前轴
  3. 直接调用轴的plot()方法。 ax.plot(...)
  4. 请注意,在问题的示例中,ax不是轴。如果这令人困惑,请以不同的名称命名,

    fig, ax_arr = plt.subplots(2,1)
    
    ax_arr[0].plot(a, b, 'go-', label='line 1', linewidth=2)
    ax_arr[0].set_xticks(a)
    ax_arr[0].set_xticklabels(list(map(str,a)))
    
    df.plot(kind='bar', ax=ax_arr[1])