Получение плотных краевых значений области из вывода графика KDE - PullRequest
1 голос
/ 15 мая 2019

Этот вопрос является расширением / альтернативным методом при попытке решить этот вопрос ( Извлечение границ плотных областей 1 с в огромном списке 1 с и 0 с )

У меня огромныйсписок из 1 и 0 [общая длина = 53820].

Пример того, как выглядит список - [0,1,1,1,1,1,1,1,1,0,0,0, 1,1,0,0,0,0,0,0,1,1 ...........]

Визуализация приведена ниже.

ось x : индекс элемента (от 0 до 53820)

ось y : значение по этому индексу (то есть 1 или0)

Черные линии вокруг пиков (обозначающие 1) - это плотные области, граничные значения (начальные и конечные значения по оси X) которых я хочу извлечь.

График ввода -> (http://i67.tinypic.com/2h5jq5e.png) The plots

Я провел оценку плотности ядра для индексов (ось x) и список1 и 0 (ось Y), и я получаю график, подобный следующему:

KDE Plot -> (https://i.stack.imgur.com/psvp2.png) The plots

Язаинтересованы в извлечении значений оси x (порядковый номер) на оси y = 1. т.е. я хотел бы извлечь границы (начальные и конечные значения), где 1s являются наиболее плотными ( Обозначается чернымлинии на графике )

Код этого кода следующий:

    path='./'+csv_path+'.csv'
    df = pd.read_csv(path)
    mylist = df['Values'] # The huge list with 1s and 0s
    indexes = list(range(len(mylist))) # The corresponding list of indexes of mylist
    ax = sns.jointplot(x=indexes, y=mylist, kind="kde")
    plt.show()

Я распечатал оси, которые sns.distplot возвращает для построения, что даетЯ <seaborn.axisgrid.JointGrid object at 0x7f09d37d5cf8>

Но я не могу извлечь граничные значения из этого.

Я также смотрел на (https://matplotlib.org/api/collections_api.html), но не мог понять, как использовать его для моей проблемы здесь.

Любая помощь будет оценена:)

...