Тепловые карты по децилям в plotly.express
Построить тепловую карту (как и почти любую визуализацию данных) в великолепной plotly.express
невероятно просто:
Но иногда хочется разбить данные на децили/квартили/квинтили. Как например, в нашем случае - по оси Y.
К сожалению, “из коробки” plotly.express
не справится.
Если Вы сделаете вот так:
То ничего не выйдет, plotly будет падать с ошибкой TypeError: Object of type Interval is not JSON serializable
Да, можно потанцевать с бубном и привести Interval
объекты к строке, и у Вас даже получится нарисовать density_heatmap
- но они будут сортироваться как строки и будут перепутаны с точки зрения значений y
.
Можно явно передать plotly порядок для y
- и это будет работать, но код будет выглядеть так:
Из плюсов - на оси Y обозначены понятные интервалы значений y
для каждого дециля.
Есть решение по-проще и по-красивее:
Теперь df.y_q
(как и ось Y на графике) - это порядковый номер дециля, обычный int.
Границы интервалов лежат в numpy.array labels
, это 11 float чисел.
Красиво! И за 2 читаемые строчки!