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

1

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

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

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

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

Изображение 174551

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

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 и возможность возвращать значения необработанных данных в каждом бине в виде многомерного массива помогут быстро вычислить дробные значения.

Теги:
matplotlib
scipy
histogram
binning

1 ответ

2
Лучший ответ

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

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)) 
  • 0
    Это сработало отлично, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню