2012-05-10 16 views
5

मैं सप्ताहांत के बिना matplotlib.finance.candlestick प्लॉट करने के लिए प्रबंधन नहीं कर रहा हूं (हर 5 candlesticks के बीच रिक्त स्थान)। example from Matplotlib's website सप्ताहांत को बाहर नहीं करता है और the way to exclude weekends on other plots कैंडलस्टिक्स पर लागू नहीं होता है।मैं पाइथन के matplotlib candlestick का उपयोग करके केवल सप्ताहांत कैसे प्लॉट करूं?

क्या कोई इस से पहले आया है?

ps।

#!/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

क्या आप एक न्यूनतम उदाहरण पोस्ट कर सकते हैं? –

+0

@Zhenya, यहां एक उदाहरण है: http://matplotlib.sourceforge.net/examples/pylab_examples/finance_demo.html?highlight=candlestick – Fred

+0

[MatPlotLib का उपयोग कर इंट्राडे कैंडलस्टिक चार्ट] का संभावित डुप्लिकेट (http://stackoverflow.com/questions/9673988/इंट्रा डे-मोमबत्ती चार्ट का इस्तेमाल करने वाली-matplotlib) – lanery

उत्तर

3

अपने 'उद्धरण' लाइन के बाद:

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

तो

candlestick(ax, weekday_quotes, width=0.6) 

यह काम करने के दिन के बीच अंतराल के बिना डेटा प्लॉट होगा, अब आप के रूप में अनुरोध किया है, यहाँ उदाहरण है xticks को तारीखों में वापस लेना होगा, अधिमानतः सोमवार। अपनी पहली बोली एक सोमवार मानते हुए किया गया था:

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()]) 

यह सुंदर सकल है, लेकिन काम किया पाने के लिए लगता है - अच्छी किस्मत!

संबंधित मुद्दे