我正在制作图表分析工具,我遇到了以下问题。到目前为止,我有一个由以下代码制作的图表:
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时显示一个小箭头一样。)
提前致谢。
答案 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])