我一直在使用烛台数据的教程,它们适用于日常图表。不过,我猜,因为它们依赖于缺省行为由matplotlib.finance烛台功能,有个我丢失在我的理解它切换到盘中。
我的数据看起来像这样(但我在调用finance.candlestick之前将日期/时间转换为数字)
high low open close volume vwap
2013-09-18 18:05:00 126.343750 125.468750 125.468750 126.046875 721 126.285909
2013-09-18 18:10:00 126.296875 126.078125 126.078125 126.187500 271 126.194649
2013-09-18 18:15:00 126.234375 125.843750 126.234375 125.843750 83 126.157003
2013-09-18 18:20:00 125.984375 125.953125 125.953125 125.953125 505 125.953311
2013-09-18 18:25:00 126.250000 126.250000 126.250000 126.250000 1 126.250000
2013-09-18 18:30:00 126.250000 126.250000 126.250000 126.250000 0 126.250000
我正在使用的代码(剥离了我所做的所有尝试)如下:
fig = plt.figure(figsize=(10, 5))
ax = fig.add_axes([0.1, 0.2, 0.85, 0.7])
# customization of the axis
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.tick_params(axis='both', direction='out', width=2, length=8,
labelsize=12, pad=8)
ax.spines['left'].set_linewidth(2)
ax.spines['bottom'].set_linewidth(2)
ax.set_ylabel('Quote ($)', size=20)
ax.xaxis.set_major_locator(fiveminutelocator)
ax.xaxis.set_minor_locator(oneminutelocator)
# candlestick call requires the following format:
# (time, open, close, high, low, ...)
print(bars.to_records())
bars.index = bars.index.map(date2num)
candle_bars = bars[ ['open', 'close', 'high', 'low' ] ]
candle_bars = map(list, candle_bars.to_records())
finance.candlestick(ax, candle_bars, width=0.1, colorup='g', colordown='r')
plt.show()
结果图如下:
编辑: 问题在于我缺乏的是我收集的单位为英寸,“figure.dpi”,并获得通过在Line2D中和长方形为matplotlib补丁宽度参数“figure.size”之间的关系的理解。
我不太清楚这种关系是如何起作用的。一个较小的范围中的时间(即10名毫秒巴,10秒的总范围)需要在finance.candlestick情节一个微小的宽度(0.000005似乎工作)。较大的时间范围(日期栏和数月的数据)可以使用默认宽度0.8。
所以我不明白的是宽度的测量值。它被描述为“点”。然而,在图中摆弄DPI似乎并不像我希望它那样做。