2012-05-10 15 views
5

Ben matplotlib.finance.candlestick hafta sonları (her 5 şamdanlar arasında boş alanlar) olmadan arsa yönetmek için yönetmiyorum. example from Matplotlib's website, hafta sonlarını hariç tutmuyor ve the way to exclude weekends on other plots, CandleSticks uygulamasına uygulanmıyor gibi görünüyor.Python'un matplotlib mum çubuğunu kullanarak sadece hafta içi günleri nasıl çizerim?

Daha önce bunlarla karşılaşan var mı?

ps. senin quotes çizgi sonra

#!/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() 
+0

Minimal bir örnek gönderir misiniz? –

+0

@Zhenya, işte bir örnek: http://matplotlib.sourceforge.net/examples/pylab_examples/finance_demo.html?highlight=candlestick – Fred

+0

[MatplotLib kullanarak gün içi mum grafikleri] 'nin olası kopyası (http://stackoverflow.com/questions/9673988/gün içi-mum-çizelgeleri kullanan-matplotlib) – lanery

cevap

3

:

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

candlestick(ax, weekday_quotes, width=0.6) 

Bu, şimdi, hafta içi arasındaki boşluklar olmadan veri arsa istendiği gibi, burada örnek xtick'leri tarihlere, tercihen pazartesi günlerine geri döndürmek zorundasınız. Bir Pazartesi İlk alıntı edildi varsayarsak:

Bu oldukça brüt ama işi gibi görünüyor
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()]) 

- iyi şanslar!

İlgili konular