Изменение порядка тепловой карты из seaborn с использованием информации о столбце из дополнительного текстового файла

#python #pandas #matplotlib #seaborn #heatmap

#python #pandas #matplotlib #seaborn #тепловая карта

Вопрос:

Я написал скрипт на Python для чтения в матрице расстояний, которая была предоставлена через текстовый файл CSV. Эта матрица расстояний показывает разницу между разными видами животных, и я пытаюсь отсортировать их по-разному (рацион, семейство, род и т.д.), Используя данные из другого CSV-файла, который содержит только одну строку информации о порядке. Используемый код приведен здесь:

 import pandas as pd
import seaborn as sns
import matplotlib.pyplot as mp

dietCols = pd.read_csv("label_diet.txt", header=None)
df = pd.read_csv("distance_matrix.txt", header=None)

ax = sns.heatmap(df)
fig = ax.get_figure()
fig.savefig("fig1.png")
mp.clf()

dfDiet = pd.read_csv("distance_matrix.txt", header=None, names=dietCols)

ax2 = sns.heatmap(dfDiet, linewidths=0)
fig2 = ax2.get_figure()
fig2.savefig("fig2.png")
mp.clf()
  

При построении матрицы расстояний исходный график выглядит следующим образом:

исходная тепловая карта без проблем

Однако, когда дополнительная информация об именовании считывается из текстового файла, созданный график содержит только один столбец и выглядит следующим образом:

тепловая карта с попытками упорядочения столбцов

Вы можете видеть, что данные матрицы используются в качестве маркировки строк, и я не уверен, почему это так. Некоторые из предоставленных строк не имеют значений, поэтому они перечислены как «NaN», поэтому я не уверен, что это может вызвать проблему. Есть ли какой-нибудь простой способ упорядочить эту матрицу расстояний, используя внешний файл? Любая помощь была бы оценена!

Комментарии:

1. Каково содержимое вашего DietCols фрейма данных. Имеет ли она ту же длину, что и матрица (115?), и в том же порядке?

2. @joshuabox фрейм данных DietCols имеет ту же длину, что и матрица, но представляет собой всего один столбец данных, и да, они расположены в том же порядке.