Цвет 2D гистограммы по «доле меток» данных в каждой ячейке - PullRequest
0 голосов
/ 09 января 2019

Исходя из сообщения, найденного здесь: 2D гистограмма, окрашенная стандартным отклонением в каждом бине

Я бы хотел покрасить каждую ячейку в двумерной сетке по доле точек, значения меток которых ниже определенного порога в Python.

Обратите внимание, что в этом наборе данных каждая точка имеет непрерывное значение метки в диапазоне 0-1.

Например, вот гистограмма, которую я сделал, в которой цвет обозначает стандартное отклонение значений меток всех точек в каждой ячейке:

enter image description here

То, как это было сделано, было с помощью

scipy.stats.binned_statistic_2d()

(см .: https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.binned_statistic_2d.html)

.. и установка статистического аргумента в 'std'

Но есть ли способ изменить этот тип графика так, чтобы окраска представляла долю точек в каждой ячейке, например, со значением метки ниже 0,5?

Возможно, единственный способ сделать это - явно определить какую-то сетку и вычислить дроби, но я не уверен, что это лучший способ сделать это, поэтому любая помощь по этому вопросу будет принята с благодарностью!

Возможно, использование scipy.stats.binned_statistic_2d или numpy.histogram2d и возможность возвращать значения необработанных данных в каждом бине в виде многомерного массива помогут быстро вычислить дробные значения.

1 Ответ

0 голосов
/ 09 января 2019

Доля элементов в массиве ниже порогового значения может быть рассчитана как

fraction = lambda a, threshold: len(a[a<threshold])/len(a)

Следовательно, вы можете позвонить

scipy.stats.binned_statistic_2d(x, y, values, statistic=lambda a: fraction(a, 0.5)) 
...