Исходя из сообщения, найденного здесь: 2D гистограмма, окрашенная стандартным отклонением в каждом бине
Я хотел бы раскрасить каждую ячейку в двумерной сетке по доле точек, значения меток которых ниже определенного порога в Python.
Обратите внимание, что в этом наборе данных каждая точка имеет непрерывное значение метки в диапазоне 0-1.
Например, вот гистограмма, которую я сделал, в которой цвет обозначает стандартное отклонение значений меток всех точек в каждой ячейке:
То, как это было сделано, было с помощью
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 и возможность возвращать значения необработанных данных в каждом бине в виде многомерного массива помогут быстро вычислить дробные значения.
Доля элементов в массиве ниже порога может быть рассчитана как
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))