Matplotlib绘图:属性错误:'list'对象没有属性“xaxis”

5

需要格式化日期的示例图

我正在尝试将股票价格与时间绘制在一起(如上所示)。下面的代码确实绘制了“OPEN”价格,但当我尝试将X轴日期从序数格式转换为ISO日期格式时,它会抛出AttributeError

相同的代码在绘制OHLC图时有效,但现在不起作用。

AttributeError: 'list' object has no attribute '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'))

尝试使用 df_copy.set_index('Date').Open.plot(label='Open values') - cs95
可以了!谢谢。不过,我的问题还是存在。为什么它会抛出一个指定为列表的错误? - MuizVhora
2个回答

5

这行代码:

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
问题来自于你的写作。
ax1 = plt.plot(df_copy['Date'], df_copy['Open'], label = 'Open values' )

由于您正在更改ax1的类型,使其不再是plt.subplot()返回的句柄。在该行之后,它是添加到图中的线条列表,这解释了您的错误消息。请参阅有关绘图命令的文档:

返回值是添加的线条列表。 matplotlib.org


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接