Matplotlib绘图:AttributeError:'list'对象没有属性'xaxis'

时间:2018-01-22 06:48:45

标签: python pandas matplotlib plot

Plot that needs to format date我试图将股票价格与时间进行对比。下面的代码确实绘制了“OPEN”价格,但是当我尝试将X轴日期从序数格式化为ISO日期时,它会抛出AttributeError。在绘制OHLC图时,相同的代码工作,但现在不知何故。

AttributeError:'list'对象没有属性'xaxis'

    df_copy = read_stock('EBAY')

    fig = plt.figure(figsize= (12,10), dpi = 80)
    ax1 = plt.subplot(111)
    ax1 = plt.plot(df_copy['Date'], df_copy['Open'], label = 'Open values' )
    ax1.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))

2 个答案:

答案 0 :(得分:3)

这一行:

ax1 = plt.plot(df_copy['Date'], df_copy['Open'], label='Open values')

将Axes对象细化为plot命令返回的艺术家列表。

不是依靠状态机将艺术家放在Axes上,而是应该直接使用你的对象:

df_copy = read_stock('EBAY')

fig = plt.figure(figsize=(12, 10), dpi=80)
ax1 = fig.add_subplot(111)
lines = ax1.plot(df_copy['Date'], df_copy['Open'], label='Open values')
ax1.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))

答案 1 :(得分:1)

问题来自于你的写作

ax1 = plt.plot(df_copy['Date'], df_copy['Open'], label = 'Open values' )

因为您正在将ax1的类型更改为plt.subplot()返回的句柄。在所述行之后,它是添加到绘图中的行列表,它解释了您的错误消息。请参阅plot命令中的纪录片:

  

返回值是已添加的行列表。   matplotlib.org