Я новичок в тепловых картах и морском рождении. Я пробовал это в течение нескольких дней, но не смог найти решение или какие-либо связанные темы. Я думаю, что я неправильно настраиваю проблему, но хотел бы знать, возможно ли то, что я пытаюсь сделать, с тепловыми картами морского происхождения ... или если тепловая карта не является правильным графическим представлением того, что я хочу показать.
У меня есть файл с оценками в формате .csv. Это выглядит примерно так:
Genus,Pariaconus,Trioza,Non-members
-40,-80,-90,-300
-40.15,-80,-100,-320
,-40.17,-86,-101,-470
,-86.2,-130,-488
,,-132,-489
,,,-500
...
Как я пытаюсь показать выше, столбцы имеют разную длину. Скажем, длина (число значений в) роде равно 10, париаконусу 15, триозе 20 и не-членам 18 000.
Кроме того, столбцы и строки не связаны друг с другом. Каждый счет индивидуален и просто попадает в группу столбцов. То, что я хочу показать с тепловой картой, это диапазон баллов, которые появляются в каждом столбце.
В идеале я хотел бы представить данные с использованием тепловой карты, где:
- Ось X - это «Род», «Париаконус», «Триоза», «Не члены».
- Ось Y
диапазон баллов, которые встречаются в наборе данных. В приведенном выше примере
Значения оси Y будут от -40 до -500.
- Colorbar является
нормализованная популяция столбцов, которые получают этот счет в
ось Y. Например, если 100% столбца Genus
-40, эта область по оси Y будет окрашена в красный цвет (для 1,0). Остальная часть оси Y для рода будет окрашена в синий цвет (для 0,0),
потому что никакие оценки для рода не находятся в диапазоне от -50 до -500. Для
Цели моего проекта, я хотел бы показать, что большинство баллов
«Род» попадают в определенный диапазон, «Париаконус» в другой диапазон,
«Не члены» в другом диапазоне и т. Д.
Причина, по которой я хочу представить это с помощью тепловой карты, а не, скажем, линейного графика, заключается в том, что линейные графики предполагают наличие тенденции между строками в одном столбце. В приведенном выше примере (столбец «Род») график «линия / разброс» может показаться, что существует связь между показателями -40, -41 и -45 при перемещении по оси X. Напротив, я просто хочу показать диапазон баллов в каждом столбце.
С данными в формате .csv выше, сейчас у меня есть следующая тепловая карта: https://imgur.com/a/VwgQwfQ
Я получаю это с помощью строки кода:
sns.heatmap(df, cmap="coolwarm")
В этой тепловой карте значения оси Y автоматически устанавливаются как индексы строк из файла .csv, а значения карты цветов - это баллы (значения строк).
Если бы я мог просто выяснить, как поменять цветовую карту и ось Y, тогда я надеюсь, что я мог бы затем перейти к выяснению, как нормализовать популяции каждого столбца вместо того, чтобы иметь его в качестве необработанных индексов: 0 до 18000. Но я пытался сделать это в течение нескольких дней и не приблизился к тому, что я хочу.
В идеале я бы хотел что-то вроде этого: https://imgur.com/a/3A0eaOD. Конечно, в тепловой карте вместо сплошных цветов были бы градиенты.
Если кто-нибудь может ответить, у меня были следующие вопросы:
- Это то, что я пытаюсь сделать, достижимо / это то, что я могу сделать с
тепловая карта? Или я должен использовать другое представление?
- Возможно, это проблема с тем, как представлены мои входные данные? Если да, то каково правильное представление при построении тепловой карты, подобной этой?
Любое другое руководство будет оценено по достоинству.