【问题标题】:AttributeError: 'Series' object has no attribute 'update_datalim'AttributeError:“系列”对象没有属性“update_datalim”
【发布时间】:2019-09-16 23:36:20
【问题描述】:

我正在尝试使用存储在 CSV 文件和 mpl_finance 库中的一些数据创建烛台图:

前五行如下所示:

              Date               Open      High       Low     Close    Volume

0  2017-08-24 04:00:00.000000  0.002890  0.002890  0.002670  0.002670  371.64
1  2017-08-24 04:05:00.000000  0.002669  0.002669  0.002669  0.002669    4.80
2  2017-08-24 04:10:00.000000  0.002600  0.002649  0.002600  0.002649   61.71
3  2017-08-24 04:15:00.000000  0.002640  0.002640  0.002640  0.002640   20.00
4  2017-08-24 04:20:00.000000  0.002620  0.002620  0.002600  0.002602   92.68   

下面是我正在使用的代码

import pandas as pd
import matplotlib.pyplot as plt
from mpl_finance import candlestick2_ochl

df = pd.read_csv("data.csv")
df["Date"] = pd.to_datetime(df["Date"])

candlestick2_ochl(ax = df["Date"],opens=df["Open"],closes=df["Close"],highs =df["High"],lows = df["Low"])
plt.show()

当我运行此代码时,我收到以下错误

Traceback (most recent call last):
  File "Untitled 5.py", line 16, in <module>
    candlestick2_ochl(ax = df["Date"],opens=df["Open"],closes=df["Close"],highs =df["High"],lows = df["Low"])
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mpl_finance.py", line 552, in candlestick2_ochl
    alpha=alpha)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mpl_finance.py", line 633, in candlestick2_ohlc
    ax.update_datalim(corners)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas/core/generic.py", line 3614, in __getattr__
    return object.__getattribute__(self, name)
AttributeError: 'Series' object has no attribute 'update_datalim'

(PS:我试过在没有df["Date"] = pd.to_datetime(df["Date"]) 的情况下运行代码,但它输出相同的错误)

非常感谢您的帮助!

【问题讨论】:

  • 您需要使用 candlestick_ochl 而不是 candlestick2_ochl 才能在轴上显示日期。
  • @ImportanceOfBeingErnest 感谢您的评论!以及如何将日期添加到烛台_ochl?
  • 检查一下this answer

标签: python pandas matplotlib plot


【解决方案1】:

来自documentation of candlestick2_ochl

matplotlib.finance.candlestick2_ohlc(ax, opens, highs, lows, closes,
width=4, colorup='k', colordown='r', alpha=0.75) 

代表开放, 收盘为条形线,高低范围为垂直线。

注意:此代码假定是否缺少任何值 open、low、high、close 他们都不见了

参数:ax : 轴

要绘制到的 Axes 实例

[...]

所以,ax 指定,您的图表将在哪个图/子图上结束。

在您的代码中,数据被分配给该变量。因此,您应该创建自己的 ax,并将其提供给函数,如下所示:

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

candlestick2_ochl(ax=ax, opens=df["Open"],closes=df["Close"],highs =df["High"],lows = df["Low"])

至于plt.subplot(1,1,1):的问题 这意味着 1x1 网格,第一个位置。您可以转到this 帖子了解更多信息。

【讨论】:

  • 非常感谢您的回复!我现在可以绘制图表,但遗憾的是 x 轴没有使用 df["Date"] 标记,您知道如何解决这个问题吗?
  • 还有fig.add_subplot(1,1,1)中的1是什么意思?
  • 你可以试试 df.set_index('Date', inplace=True)
  • 我刚刚将它添加到代码中,但它并没有改变任何东西
  • 执行 print(df.index) 时会发生什么?
猜你喜欢
  • 2020-11-11
  • 2019-04-22
  • 2019-07-26
  • 2020-04-04
  • 2017-12-12
  • 2018-05-25
  • 2019-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多