烛台图表有两个尺度

时间:2014-04-01 08:43:20

标签: python matplotlib candlestick-chart

我想绘制两个烛台图表,代表两个不同的时间序列,需要用不同的比例绘制。在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()

你可以看到第一个和第二个之间的差异几乎没有,除了值的一些小变化让我觉得有一种重叠。如何保持两个价格系列的清晰和清晰可见它们是两个不同的东西?

1 个答案:

答案 0 :(得分: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设置颜色(如果颜色开始结束时颜色高于结束颜色) 宽度调整宽度

我没有时间去做,但要玩它直到看起来不错。

注意:Matplotlib' paint'按照您绘制顺序排列的图表,因此您最后绘制的图表将显示在顶部。