Вопрос по python – Как построить график только по рабочим дням, используя подсвечник Python для matplotlib?

6

Мне не удается построить matplotlib.finance.candlestick без выходных (пробелы между каждыми 5 подсвечниками).пример с сайта Matplotlib не исключает выходных испособ исключить выходные на других участках не относится к CandleSticks.

Кто-нибудь сталкивался с этим раньше?

пс. по запросу, вот пример:

#!/usr/bin/env python
from pylab import *
from matplotlib.dates import  DateFormatter, WeekdayLocator, HourLocator, \
 DayLocator, MONDAY
from matplotlib.finance import quotes_historical_yahoo, candlestick,\
 plot_day_summary, candlestick2

# (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')  # Eg, Jan 12
dayFormatter = DateFormatter('%d')      # Eg, 12

quotes = quotes_historical_yahoo('INTC', date1, date2)

fig = figure()
fig.subplots_adjust(bottom=0.2)
ax = fig.add_subplot(111)
ax.xaxis.set_major_locator(mondays)
ax.xaxis.set_minor_locator(alldays)
ax.xaxis.set_major_formatter(weekFormatter)

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

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

show()
Не могли бы вы опубликовать минимальный пример? ev-br
Возможный дубликатIntraday candlestick charts using MatPlotLib lanery
Error: User Rate Limit Exceededmatplotlib.sourceforge.net/examples/pylab_examples/… Fred

Ваш Ответ

1   ответ
4

После ваших "цитат" линия:

weekday_quotes = [tuple([i]+list(quote[1:])) for i,quote in enumerate(quotes)]

затем

candlestick(ax, weekday_quotes, width=0.6)

При этом данные будут отображаться без разрывов между днями недели, теперь вам нужно поменять символы обратно на даты, предпочтительно на понедельники. Предполагая, что ваша первая цитата была понедельником:

import matplotlib.dates as mdates

ax.set_xticks(range(0,len(weekday_quotes),5))
ax.set_xticklabels([mdates.num2date(quotes[index][0]).strftime('%b-%d') for index in ax.get_xticks()])

Это довольно грубо, но похоже, что работа сделана - удачи!

Похожие вопросы