1

異なるスケールでプロットする必要がある 2 つの異なる時系列を表す 2 つのローソク足チャートをプロットしたいと思います。ドキュメントに従って、次のようなことを行う必要があると思います。

from pylab import * 
from matplotlib.finance import candlestick

price1 = [(734542.0, 1.326, 1.3287, 1.3322, 1.3215), (734543.0, 1.3286, 1.3198, 1.3292, 1.3155), (734546.0, 1.321, 1.3187, 1.3284, 1.3186), (734547.0, 1.3186, 1.3133, 1.3217, 1.308)]
price2 = [(734542.0, 1.5819, 1.5819, 1.5886, 1.5792), (734543.0, 1.5817, 1.5756, 1.5851, 1.5729), (734546.0, 1.578, 1.5766, 1.583, 1.5753), (734547.0, 1.5765, 1.5692, 1.5772, 1.5645)]

fig, ax = subplots()
candlestick(ax,price1,width=0.5)
ax.xaxis_date()
ax.autoscale_view()

ax2 = ax.twinx()
candlestick(ax2,price2,width=0.5)
ax2.xaxis_date()
ax2.autoscale_view()

plt.show()

私が取得しようとしているのは、次のようなものです。ただし、このコードを実行するだけで、2 つの価格系列が「結合」され、期待した効果が得られないことがわかります。誰でもこれで私を助けて、私が間違っていることを教えてもらえますか?

編集: 基本的に、2 つの価格シリーズの違いはわかりません。このコードを実行すると、最初の価格シリーズのみがプロットされます。

from pylab import * 
from matplotlib.finance import candlestick

price1 = [(734542.0, 1.326, 1.3287, 1.3322, 1.3215), (734543.0, 1.3286, 1.3198, 1.3292, 1.3155), (734546.0, 1.321, 1.3187, 1.3284, 1.3186), (734547.0, 1.3186, 1.3133, 1.3217, 1.308)]
price2 = [(734542.0, 1.5819, 1.5819, 1.5886, 1.5792), (734543.0, 1.5817, 1.5756, 1.5851, 1.5729), (734546.0, 1.578, 1.5766, 1.583, 1.5753), (734547.0, 1.5765, 1.5692, 1.5772, 1.5645)]

fig, ax = subplots()
candlestick(ax,price1,width=0.5)
ax.xaxis_date()
ax.autoscale_view()
"""
ax2 = ax.twinx()
candlestick(ax2,price2,width=0.5)
ax2.xaxis_date()
ax2.autoscale_view()
"""
plt.show()

1 番目と 2 番目の値の違いはほとんどないことがわかります。ただし、値に若干の変化があり、一種の重複があると思われます。2 つの価格系列を明確に区別し、2 つの異なるものであることを明確に示すにはどうすればよいですか?

4

1 に答える 1

2

上記の答えを見ましたが、データが何であるかを知っていて、それをいじることができる場合にのみ機能し、重複しないようにします。本当に必要なのは、バーの書式設定をいじることです。方法の例として、以下にばかげた例があります。以下では、色を変更したり、透明度を追加したり、幅を変えたりしています。

from Core.Models.Program import Program
from pylab import * 
from matplotlib.finance import candlestick

price1 = [(734542.0, 1.326, 1.3287, 1.3322, 1.3215), (734543.0, 1.3286, 1.3198, 1.3292,    1.3155), (734546.0, 1.321, 1.3187, 1.3284, 1.3186), (734547.0, 1.3186, 1.3133, 1.3217, 1.308)]
price2 = [(734542.0, 1.5819, 1.5819, 1.5886, 1.5792), (734543.0, 1.5817, 1.5756, 1.5851, 1.5729), (734546.0, 1.578, 1.5766, 1.583, 1.5753), (734547.0, 1.5765, 1.5692, 1.5772, 1.5645)]

fig, ax = subplots()
candlestick(ax,price1,width=1,colorup="blue",colordown="orange")
ax.xaxis_date()

ax2 = ax.twinx()

candlestick(ax2,price2,width=.5,colordown="green",alpha=.5)
ax2.xaxis_date()


plt.show()

alpha は透明度を設定します (0.5 は半分表示されます) colorup,colourdown は色を設定します (開始が終了よりも高い場合はカラーアップします) width は幅を調整します

時間はありませんが、いい感じになるまで遊んでみます。

注: Matplotlib は、プロットした順序でチャートを「描画」するため、最後にプロットしたものが一番上に表示されます。

于 2014-04-01T09:03:59.863 に答える