2016-06-15 26 views
1

私はpylab_examplesのコード例からOHLCチャートを作成するためのコードを持っている:http://matplotlib.org/examples/pylab_examples/finance_demo.htmlからfinance_demo.py:ローソク足チャートの上に複数の線を描くには?

チャート出力

enter image description here

、私は日によって20で水平線を描画してみてください今日まで しかし、私は空の図でエラーが発生します。

#!/usr/bin/env python 
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() 

どのように私はより多くの行を追加することができます:ここで

は、コードのですか?

ありがとうございます。

+0

それを読みやすくするために、あなたのコードをフォーマットするために、いくつか気をつけてください。再現性があるなら、それはいいかもしれません:あなたの例が実行するために貼り付けられたコード以外のものを必要としないことを確認してください。 – Jieter

+0

助言ありがとうございます@jieter私は –

+0

私の投稿を編集する多くのより良い、ありがとう。しかし、あなたの問題点が私には分かりません。あなたの例では、20行目は 'raise SystemExit'です。 'set_minor_formatter(dayFormatter)'のコメントを外すと、重なっているラベルがたくさんある画像が得られます。 – Jieter

答えて

2

キャンドルプロットを描画するために既に使用している他のものを描くために、その軸を再び使用することはできません。

別の軸を持つ必要があります。つまり、同じ領域の別のサブプロットを追加する必要があります。

from matplotlib.finance import candlestick_ochl 
import matplotlib.pyplot as plt 
import matplotlib.dates as mdates 
import matplotlib.ticker as mticker 

fig = plt.figure() 
ax1 = fig.add_subplot(111) # in this function, first number 1 represent the height, 
# second is for width and third is the plot number 
ax2 = fig.add_subplot(111) # make sure both have same arguments for add_subplot function 

ochl = [[mdates.date2num(datetime.date(2014, 12, 29)),20,30,35,15], 
    [mdates.date2num(datetime.date(2015, 1, 30)),21,14,40,10], 
    [mdates.date2num(datetime.date(2015, 2, 28)),23,29,45,15]] 

# it is in the same expected order date,open,high,low,close 
candlestick_ochl(ax1, ochl, width=4, colorup='g', colordown='r', alpha=1) 
ax1.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d')) 
ax1.xaxis.set_major_locator(mticker.MaxNLocator(4)) 
ax1.grid(True) 
ax2.plot([mdates.date2num(datetime.date(2014, 12, 29)),mdates.date2num(datetime.date(2015, 1, 29))],[20,30],color = 'b') 
# make sure in the second plot, the xaxis is also like date type converted to number by date2num function 
plt.show() 

と上記のコードの結果、上記のコードのための

プロット

enter image description here

関連する問題