2014-04-01 43 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和标记的答案我会说,我已经意识到通过绘制一个更长的系列,该方法的工作原理和我所需要的是通过格式化条来区分它们。谢谢! –