2017-02-11 18 views
1

私はmatplotのlibを使ってストックの基本的なプロットをしようとしていますが、私はプロットのボリューム部分を埋めるのが難しいです。Matplotlib - 塗りつぶしのトラブル

私は2つの別々のチャート(もう一方の上に)で株式の価格と量をプロットしようとしています。 2つの直線(コード内のATTEMPT 1)をプロットすると、予想どおりにうまくいくように見えます。

ボリュームライン(コード内のATTEMPT 2)の下に塗りつぶすと、価格プロットは約5ピクセル幅に完全に盛り上がって見え、2番目のボリュームプロットには何もありません。

その唯一の明示的ATTEMPT 2.また

に設定されたように私はそれがx軸(日付)シリーズとは何かだと仮定し、私は双子の軸を持つ単一のグラフで同じデータをプロットすることを試みてきました。私は同じ結果を1つのチャート内でしか得られません。私は同じソリューションが両方のタイプのチャートでこの問題を解決すると仮定していますか?

また、誰かが私にy軸の縮尺を縮小するヒントを教えてもらえますか?

私には何が欠けていますか?

ありがとうございます!

ベン

import datetime 
import numpy as np 
import matplotlib.colors as colors 
import matplotlib.finance as finance 
import matplotlib.dates as mdates 
import matplotlib.ticker as mticker 
import matplotlib.mlab as mlab 
import matplotlib.pyplot as plt 
import matplotlib.font_manager as font_manager 

# get the stock data 
fh = finance.fetch_historical_yahoo('AAPL', (2007, 2, 12), (2011, 2, 12)) 
r = mlab.csv2rec(fh) 
fh.close() 
r.sort() 


# *** ATTEMPT 1: 2 standard line plots ****************************** 
f, (ax1, ax2) = plt.subplots(2, sharex=True, sharey=False) 
ax1.plot(r.close) 
ax2.plot(r.volume) 
f.subplots_adjust(hspace=0) 


# *** ATTEMPT 2: Fill the volume plot ******************************* 
f, (ax1, ax2) = plt.subplots(2, sharex=True, sharey=False) 
ax1.plot(r.close) 
ax2.fill_between(r.date,0, r.volume, facecolor='#0079a3', alpha=0.4) 
f.subplots_adjust(hspace=0) 
plt.setp([a.get_xticklabels() for a in f.axes[:-1]], visible=False) 

答えて

1

あなたは2 xaxesをリンクするので、彼らは同じx軸のデータを共有する必要があります。 plot(y)の代わりにplot(x,y)という構文を使用すると、問題が解決するはずです。

f, (ax1, ax2) = plt.subplots(2, sharex=True, sharey=False) 
ax1.plot(r.date,r.close) 
ax2.fill_between(r.date,0, r.volume, facecolor='#0079a3', alpha=0.4) 
f.subplots_adjust(hspace=0) 
+0

は素晴らしい作品。ありがとう! – BigWinston

関連する問題