matplotlib.axis.axes 体积的 mplfinance 错误
Posted
技术标签:
【中文标题】matplotlib.axis.axes 体积的 mplfinance 错误【英文标题】:matplotlib.axis.axes error in mplfinance for volume 【发布时间】:2021-03-17 09:44:53 【问题描述】:我正在处理类似于daily.head
的股票数据
我的代码是:
import pandas as pd
import mplfinance as mpf
import matplotlib.pyplot as plt
data = pd.read_csv('/content/drive/MyDrive/python/TEchAnalysis.csv')
figdims=(15,10)
fig , ax = plt.subplots(figsize=figdims)
mpf.plot(daily , type='candle' , mav=(5,10,20,50,100) ,volume=True , ax=ax )
我遇到了错误
ValueError:“volume”必须是“matplotlib.axis.Axes”类型
谁能解释一下这个错误以及如何解决它?
【问题讨论】:
【参考方案1】:如果您指定外轴,您还应该指定轴以显示体积。根据documentation关于外轴:
请注意以下几点:
使用 kwargax=
将您想要的任何 matplotlib 轴传递到mpf.plot()
如果您还想绘制体积,则必须为体积传入一个 Axes 实例,因此请使用 volume=<myVolumeAxesInstance><myVolumeAxesInstance>
而不是volume=True
。 如果您为mpf.plot()
指定ax=
,那么您还必须为所有对make_addplot()
的调用指定ax=
。
【讨论】:
这是正确的答案。我还建议,对于你试图完成的事情,不要使用外轴模式。请不要import matplotlib.pyplot as plt
。并且不 figdims=(15,10)
和fig , ax = plt.subplots(figsize=figdims)
; 宁可这样做:mpf.plot(daily,type='candle',mav=(5,10,20,50,100),volume=True,figratio=(15,10))
一般来说,如果您尝试完成 mplfinance 不支持的事情,您只希望使用“外轴模式”。【参考方案2】:
试试这个:
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import mplfinance as mpf
import pandas as pd
import yfinance as yf
%matplotlib inline
df = yf.download('aapl', '2015-01-01', '2021-01-01')
df.rename(columns= 'Adj Close': 'Adj_close', inplace= True)
df1 = df.copy().loc['2015-01':'2015-02', :]
fig, ax1 = plt.subplots(figsize= (12, 6))
fig.set_facecolor('#ffe8a8')
ax1.set_zorder(1)
ax1.grid(True, color= 'k', linestyle= '--')
ax1.set_frame_on(False)
ax2 = ax1.twinx()
ax2.grid(False)
mpf.plot(df1, ax= ax1, type= 'candle', volume= ax2, xlim= (df1.index[0],
df1.index[-1]))
plt.show()
它工作得很好,提供了一些自定义选项。 这是输出:
【讨论】:
以上是关于matplotlib.axis.axes 体积的 mplfinance 错误的主要内容,如果未能解决你的问题,请参考以下文章