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关于外轴:

请注意以下几点:

使用 kwarg ax= 将您想要的任何 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 错误的主要内容,如果未能解决你的问题,请参考以下文章

MAPGIS栅格数据表面积体积土方量计算分析对比

umi vendors 包体积较大处理

用C++编程 输入一球半径,求球的体积? (需要编程的详细过程)

求球形的体积

-----污染体的采集“管道”须要的体积-----

Three.js如何计算Mesh的体积