在Matplotlib图表上绘制“信号”系列

时间:2014-01-13 15:11:40

标签: python matplotlib

我正在制作图表分析工具,我遇到了以下问题。到目前为止,我有一个由以下代码制作的图表:

def makeTheChart2(self, ser1, ser2, ser3):
    ecchart.figure(2)
    ecchart.subplot(111)
    ecchart.plot(ser1,label = "Upper Band", color = "black")
    ecchart.plot(ser2, label = "Lower Band", color = "blue")
    ecchart.plot(ser3, label = "Price", color = "red")
    ecchart.legend(loc='upper center', bbox_to_anchor=(0.5, -0.05),
      fancybox=True, shadow=True, ncol=5)
    ecchart.ylabel('Indicators evolution')
    ecchart.suptitle('Indicators', fontsize = 20)

结果是一张图表显示了一条红线(这是一个股票价格)包含在一个上部(黑色)和一个下部(蓝色)带之间(抱歉,我不能发布图像,我是Stack Overflow的新手,所以我还没有足够的声誉。

绘制的三个系列是“ser1”,“ser2”和“ser3”。现在,假设我有第四个系列,它不是由浮点数组成,而是由布尔数“真和假”组成。具体来说,当红线穿过黑线或蓝线时,列表将为“True”,“False”反之亦然。 有没有办法“绘制”这些信息,或者更好的是每当红线“价格”触及/越过另外两个中的一个时,在图表上添加标签? (我猜这个信息将包含在第四个列表中,就像每次列表值为True时显示一个小箭头一样。)

提前致谢。

1 个答案:

答案 0 :(得分:0)

看一下这个答案:matplotlib: Set markers for individual points on a line

要获得markers_on(在参考答案中调用),您可以执行以下操作:

>>> import numpy as np
>>> x = np.array([1,2,3,4,5])
>>> b = np.array([True,False,False,True,False]) # this is your boolean data array
>>> markers_on = x[~b]
>>> markers_on
array([2, 3, 5])