我尝试运行以下代码:

代码:

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'获得了多个值)。我的代码有什么问题?

最佳答案

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

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

  • 调用plt.plot(...)以绘制到当前轴。使用 plt.sca()
  • 设置当前轴
  • 直接调用轴的plot()方法。 ax.plot(...)

  • 请注意,在问题示例中,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])
    

    关于matplotlib - TypeError : inner() got multiple values for keyword argument 'ax' ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47726982/

    10-11 10:19