首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用具有NaN列的mplfinance在Python语言中绘制金融图

使用具有NaN列的mplfinance在Python语言中绘制金融图
EN

Stack Overflow用户
提问于 2021-10-25 18:24:05
回答 1查看 365关注 0票数 1

我想绘制一个带有附加指标的烛台图,其中一个指标可以是所有的nan。为此,我使用了名为mplfinance的python matplotlib实用程序。Mplfinance使用一个参数作为构建烛台的主要数据,第二个参数是一个具有附加指标值的数组。当我尝试实现一个自定义指示器时,我首先将一个填充了nan的空列添加到包含指示器的数组中,然后使用一个条件将其填充到循环中。可能发生的情况是,整个列在循环结束后都保持为nan,因此我得到了一个错误,无法绘制图形。

代码语言:javascript
运行
复制
df = pd.DataFrame.from_dict(pd.json_normalize(newBars), orient='columns')

idf = df.copy()
idf = idf.iloc[:,[0]]
idf.columns = ['col0']

idf.assign(col1=float('nan')) # Now we add column #1

for i in range(len(idf)-1):
    if a > b: # Some condition I use to calculate Col1
        idf.iat[i, 1] = float_value

indicators = [
    mpf.make_addplot(idf['Col0'],color='grey',width=1,panel=0),
    mpf.make_addplot(idf['Col1'],color='g',type='scatter',markersize=50,marker='^',panel=0),
]

mpf.plot(df, type='candle', style='yahoo', volume=True, addplot=indicators,
   figscale=1.1,figratio=(8,5), panel_ratios=(2,1)) 

从代码中可以看到,Col1可能都是nan,在本例中,我得到了以下错误:

代码语言:javascript
运行
复制
ValueError: zero-size array to reduction operation maximum which has no identity

我如何避免这个错误,并只绘制没有nan列的图形,即使数组中存在这样的列?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-25 20:21:20

Mplfinance就是故意这样设计的。如果您将所有NaN数据传递给mpf.make_addplot(),那么您实际上什么也不会说。在将make_addplot()添加到addplot指示器列表之前,您可以很容易地测试是否有任何数据。

是的,如果你可以只传递指示器而不必检查你的模型是否真的“指示”了什么,这可能会使你的代码变得更简单,然而(1)这将使mplfinance代码必须进行检查,增加(尽管非常轻微)维护mplfinance库的成本,以及(2)可能是你错误地传递了所有的NaN值,在这种情况下,如果mplfinance只是忽略了数据,你可能会花费大量的时间来调试,以确定为什么你的指示器没有出现在绘图上。

有关详细讨论,请参阅:https://github.com/matplotlib/mplfinance/issues/259#issuecomment-688429294

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69712995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档