我正在尝试使用一些存储在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"])
的情况下运行代码,但它输出了相同的错误)
非常感谢您的帮助!
答案 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帖子以获取有关此内容的更多信息。