gpt4 book ai didi

python - 如何在 Pandas 中获取盘中价格 - 成交量图?

转载 作者:太空狗 更新时间:2023-10-30 02:42:15 24 4
gpt4 key购买 nike

我有一个 DataFrame,其中包含日内价格/交易量数据:

time                  price    volume   
2015-04-15 10:10:00 10 500
2015-04-15 10:20:00 15 100
2015-04-15 10:30:00 20 70
2015-04-15 10:30:00 etc etc

我需要一个标准的价格-交易量图表,其中顶部图表包含价格(一条规则线),底部图表包含交易量(条形图)。

当然,两个图表应该共享同一个轴。

到目前为止,我想出了:

plt.figure(figsize=(20,15))          

ax1=plt.subplot2grid((2,2),(0,0),colspan=2)
ax2=plt.subplot2grid((2,2),(1,0),colspan=2)

ax2.xaxis.set_major_locator(HourLocator(interval=3))
ax2.xaxis.set_major_formatter(DateFormatter('%H:%M'))

data.ix['2015-10-01': '2015-10-02','price'].plot(ax=ax1)
data.ix['2015-10-01': '2015-10-02','volume'].plot(ax=ax2, kind='bar')

但是我得到了条形图的超密集刻度标签(图表不可用)。

我怎样才能简单地指定每小时有一次次要报价,每 3 小时有一次主要报价(以便图表仍然可读)?

最佳答案

pandas.plot.bar()DateTimeIndex 存在一些挑战,例如 here .以下内容:

import matplotlib as mpl
import matplotlib.pyplot as plt

plt.style.use('ggplot')
import pandas as pd
import numpy as np
from datetime import datetime

n = 100
idx = pd.date_range(start=datetime(2016, 1, 1, 10), freq='10Min', periods=n)
data = pd.DataFrame(data={'price': np.cumsum([0.0001] * n + np.random.random(n)),
'volume': np.random.randint(low=100, high=10000, size=n)}, index=idx)

fig, ax = plt.subplots(nrows=2, sharex=True, figsize=(15,8))

ax[0].plot(data.index, data.price)
ax[1].bar(data.index, data.volume, width=1/(5*len(data.index)))

xfmt = mpl.dates.DateFormatter('%H:%M')
ax[1].xaxis.set_major_locator(mpl.dates.HourLocator(interval=3))
ax[1].xaxis.set_major_formatter(xfmt)

ax[1].xaxis.set_minor_locator(mpl.dates.HourLocator(interval=1))
ax[1].xaxis.set_minor_formatter(xfmt)

ax[1].get_xaxis().set_tick_params(which='major', pad=25)

fig.autofmt_xdate()
plt.show()

产生以下结果。请注意,返回到 matplotlib 需要对 ax[1].bar() 中的 width 参数进行一些调整。对于 minorticks,您可能需要查看 here有关更详细的格式设置选项,尤其是。重新跳过间隔以避免重叠。

enter image description here

关于python - 如何在 Pandas 中获取盘中价格 - 成交量图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37212779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com