2014-01-13 6 views
1

Я делаю инструмент для анализа диаграмм, и у меня есть следующая проблема. До сих пор у меня есть график, который сделан с помощью следующего кода:Построение серии «сигналов» на диаграмме 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», когда красная линия пересекает черную или синюю линию, «False» наоборот. Есть ли способ «запечатлеть» эту информацию или лучше добавить ярлык к диаграмме каждый раз, когда красная линия «Цена» касается/пересекает одну из двух других? (Я предполагаю, что эта информация будет содержаться в четвертом списке, что-то вроде отображения маленькой стрелки каждый раз, когда значение списка равно True).

Заранее спасибо.

+1

Если Вы даете ссылку на изображение (скажем, размещен на imgur), более высокий пользователь rep может опубликовать его в строке для вас. – Hooked

ответ

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]) 
+0

Отлично, это сработало! Большое спасибо :) –

+0

В качестве примечания, есть PR, чтобы сделать настройку, какие маркеры отображаются намного проще: https://github.com/matplotlib/matplotlib/pull/2662 – tacaswell

Смежные вопросы