2014-04-01 71 views
1

我想繪製兩個燭臺圖表,表示需要用不同刻度繪製的兩個不同時間序列。繼documentation我想我應該做這樣的事情:有兩個刻度的燭臺圖表

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

我想要得到的是類似this;然而,運行這段代碼足以看到兩個價格系列有點「聯合」在一起,沒有產生預期的效果。任何人都可以幫我解決這個問題,告訴我我做錯了什麼?

編輯:基本上我沒有看到兩個價格系列之間的區別。如果你想運行此代碼,該地塊只有第一個價格序列:

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

你可以看到,第一和第二之間的差異幾乎沒有,除了在價值觀,讓我想起了一些小的變化有一種重疊。我怎樣才能保持兩個價格系列不同,清晰可見,他們是兩回事?

+0

Hello @MatteoNNZ。 「聯合」在一起是什麼意思?你的意思是你的兩個燭臺重複太多了嗎? – Ffisegydd

+0

嗨@Ffisegydd不是真的。我不知道堆棧溢出有什麼樣的錯誤,但我不能發佈圖片(它認爲我是一個機器人,我只能寫這個問題:/),所以我不能準確地告訴你...我'我會編輯這個問題來展示我的意思。 –

回答

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

阿爾法設置透明度(0.5是一半可見) colorup,colourdown設置顏色(顏色,如果它開始結束更高比它完成) 寬度調整寬度

我沒有時間做它,但玩弄它,直到它看起來不錯。

注意:Matplotlib按照您繪製的順序「繪製」圖表,因此您最後繪製的圖表將顯示在上方。

+0

+1,比修改比例尺更好的解決方案,我會刪除我的答案。 – Ffisegydd

+0

+2和標記的答案我會說,我已經意識到通過繪製一個更長的系列,該方法的工作原理和我所需要的是通過格式化條來區分它們。謝謝! –