Любой способ поменять значения карты цветов моей морской карты с ее значениями оси Y? - PullRequest
0 голосов
/ 12 мая 2019

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

У меня есть файл с оценками в формате .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. Конечно, в тепловой карте вместо сплошных цветов были бы градиенты.

Если кто-нибудь может ответить, у меня были следующие вопросы:

  1. Это то, что я пытаюсь сделать, достижимо / это то, что я могу сделать с тепловая карта? Или я должен использовать другое представление?
  2. Возможно, это проблема с тем, как представлены мои входные данные? Если да, то каково правильное представление при построении тепловой карты, подобной этой?

Любое другое руководство будет оценено по достоинству.

...