python Matplotlib烛台图仅适用于每日数据,不适用于日内

杰顺

我正在尝试使用matplotlib绘制烛台数据。从1分钟的数据开始,我使用pd.Timegrouper在不同的时间范围(从5分钟到每日)中对它们进行分组,但是绘图仅适用于每日数据。在下面,您可以找到我正在使用的1分钟数据的示例:

**数据示例:**(熊猫数据框)

data_indexed_5M = data_indexed.groupby([pd.TimeGrouper(freq=pd.offsets.Minute('5'))]).agg({'<LOW>': lambda s: s.min(), 
                                     '<HIGH>': lambda s: s.max(),
                                     '<OPEN>': lambda s: s[0],
                                     '<CLOSE>': lambda s: s[-1]})

ata_indexed_Daily = data_indexed.groupby([pd.TimeGrouper(freq='D')]).agg({'<LOW>': lambda s: s.min(), 
                                     '<HIGH>': lambda s: s.max(),
                                     '<OPEN>': lambda s: s[0],
                                     '<CLOSE>': lambda s: s[-1]})

data_indexed_Daily['Date2'] = data_indexed_Daily['dateTime'].apply(lambda d: mdates.date2num(d.to_pydatetime()))
data_indexed_Daily = data_indexed_Daily.set_index('dateTime')

data_indexed_5M['Date2'] = data_indexed_5M['dateTime'].apply(lambda d: mdates.date2num(d.to_pydatetime()))
data_indexed_5M = data_indexed_5M.set_index('dateTime')


def plotWithMatplot(dataevento):
    deltatime = timedelta(minutes=100*5)  #...(days=100) for daily plot

    pre_data = dataevento - deltatime
    post_data= dataevento + deltatime

    data_slice = data_indexed_5M.loc[pre_data:post_data]   #data_indexed_Daily --> for daily plot

    tuples = [tuple(x) for x in     data_slice[['Date2','<OPEN>','<HIGH>','<LOW>','<CLOSE>']].values]

    fig, ax = plt.subplots()
    ax.xaxis_date()
    ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d %H:%M:"))    

    plt.xticks(rotation=45)
    plt.xlabel("Date")
    plt.ylabel("Price")
    plt.title("EURUSD 5M")
    candlestick_ohlc(ax, tuples, width=.6, colorup='g', alpha =.4);

    plt.show()

但是,当我在“每日”和“ 5分钟”(其他任何盘中时间范围)上绘制相同事件时,我得到以下结果:

每日(好结果):

在此处输入图片说明

盘中(糟糕的结果):

在此处输入图片说明

希思R堡

似乎未公开的width论据candlestick_ohlc是关键。将其乘以每个数据点之间一天的比例。由于您的数据以分钟为增量,因此应该这样做:

candlestick_ohlc(ax, tuples, width=.6/(24*60), colorup='g', alpha =.4);

请注意,尽管链接并不明显,但这实际上是一个FAQ。看:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Scikit-learn仅适用于python 2,而不适用于python 3

Python错误:此方法仅适用于类,不适用于实例

多个图表不适用于子图功能?Python

Python / Pandas,.count不适用于较大的数据框

for循环不适用于python中的空数据框

Python:pmdarima,autoarima不适用于大数据

python 数据库结果不适用于 if 语句

单击不适用于python硒

Python硒不适用于WebDriverWait

高斯拟合不适用于Python

python爬虫不适用于asyncio

Scrape href不适用于python

Webdriver不适用于Selenium(Python)

PyDev不适用于Python 3.2

PyQuery Python不适用于for循环

Python字典不适用于'pass'

Python pandas数据框数据透视仅适用于ivot_table(),而不适用于set_index()和unstack()

仅适用于python3.5的numpy安装,不适用于python3.6的安装

Python脚本仅适用于IDLE

分割多页PDF的Python脚本仅适用于某些PDF,而不适用于其他PDF

Python Messenger Bot仅适用于管理员,不适用于所有人

适用于Python 2但不适用于Python 3的Python子进程PIPE

带有 Plotly/python 数据框的语言环境库适用于 jupyter,但不适用于 Flask/dash

python regex适用于regex101但不适用于python2

windows API 不适用于 python3,但适用于 python 2

请求模块不适用于 Python3,但适用于 Python

编码适用于 1 而不适用于 Twitter 中使用 python 的其他列表

POST请求适用于Postman,但不适用于Python

Python中的Selenium预期条件适用于Firefox,但不适用于Chrome