plot.ly 通过 matplotlib 的烛台图

plot.ly candlestick graph via matplotlib

使用以下 example 我能够使用 matplotlib 创建烛条图。

import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter, WeekdayLocator,\
     DayLocator, MONDAY
from matplotlib.finance import quotes_historical_yahoo_ohlc, candlestick_ohlc


# (Year, month, day) tuples suffice as args for quotes_historical_yahoo
date1 = (2004, 2, 1)
date2 = (2004, 4, 12)


mondays = WeekdayLocator(MONDAY)        # major ticks on the mondays
alldays = DayLocator()              # minor ticks on the days
weekFormatter = DateFormatter('%b %d')  # e.g., Jan 12
dayFormatter = DateFormatter('%d')      # e.g., 12

quotes = quotes_historical_yahoo_ohlc('INTC', date1, date2)
if len(quotes) == 0:
    raise SystemExit

fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2)
ax.xaxis.set_major_locator(mondays)
ax.xaxis.set_minor_locator(alldays)
ax.xaxis.set_major_formatter(weekFormatter)
#ax.xaxis.set_minor_formatter(dayFormatter)

#plot_day_summary(ax, quotes, ticksize=3)
candlestick_ohlc(ax, quotes, width=0.6)

ax.xaxis_date()
ax.autoscale_view()
plt.setp(plt.gca().get_xticklabels(), rotation=45, horizontalalignment='right')

plt.show()

查看 plot.ly 的 APIs,您可以使用 plot.ly 在线发布 matplotlib 图形。我在上面的代码中添加了以下内容:

import matplotlib.mlab as mlab
import plotly.plotly as py

py.sign_in('xxx', 'xxxx')
plot_url = py.plot_mpl(fig)

plot.ly 产生了以下 graph,如果您放大图表,您会发现图表实际上并没有显示蜡烛条的主体,只是上下阴影。我是否错误地导入了图表?还是 plot.ly 不支持烛条图,即使它们是通过 matplotlib 生成的?

发现截至 2015 年 5 月 27 日 Plot.ly 当前不支持烛台。

我实际上向 plot.ly 开发人员提出了将烛台图表类型添加到股票 plot.ly 包中的请求。非常惊讶它仍然没有被包含为默认值 "type"

对于这个用例,我能够通过使用 'ohlc' 作为参数将 pandas DataFrame 与重采样时间索引组合在一起来构建自己的 OHLC 蜡烛图。唯一需要注意的是,您需要所有资产交易的完整历史记录以及 DataFrame 索引的时间戳才能正确构建此类图表:

newOHLC_dataframe = old_dataframe['Price'].astype(float).resample('15min', how='ohlc')

其中 Price 键是您所有的 y 值。此 .resample() 将构建蜡烛并自行计算给定时间段内的 max/min/first/last。在我上面的示例中,它将为您提供一个包含 15 分钟蜡烛的新 DataFrame.astype(float) 可能需要也可能不需要,具体取决于您的基础数据。