AttributeError:“系列”对象没有属性“ update_datalim”

时间:2019-04-27 20:57:42

标签: python pandas matplotlib plot

我正在尝试使用一些存储在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"])的情况下运行代码,但它输出了相同的错误)

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

来自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指定图形将最终显示在哪个图/子图上。

在您的代码中,数据已分配给该变量。因此,您应该创建自己的斧头,并将其喂入函数,如下所示:

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帖子以获取有关此内容的更多信息。