Тепловая карта Seaborn неправильно размещает данные на осях - PullRequest
0 голосов
/ 05 апреля 2020

Я новичок в использовании Seaborn и обычно использую только Matplotlib.pyplot.

В связи с недавними разработками COVID руководитель попросил меня составить оценки того, как изменения в составе и расходах учащихся нам необходимы для финансирования затронутых студенческих взносов (я работаю в бюджетной канцелярии колледжа). Я смог собрать свой анализ сценариев, но сейчас пытаюсь визуализировать эти результаты в тепловой карте.

Я хотел бы иметь возможность:

 x-axis be my population change rates,
 y_axis be my expense change rates,
 cmap be my new student fees depending on the x & y axis.

То, что в настоящее время делает мой код:

 x-axis is displaying the new student fee category (not sure how to describe this - see picture)
 y-axis is displaying the population change and expense change (population, expenses)
 cmap is displaying accurately

По сути, мой код размещает каждый сценарий поверх других вдоль оси y.

Вот изображение то, что в настоящее время производится, что не правильно:

Example Output - NOT Correct

Я прикрепил ссылку на ноутбук Colab Jupyter с моим кодом, и ниже фрагмент раздела, доставляющий мне проблемы.

# Create Pandas DF of Scenario Analysis       
df = pd.DataFrame(list(zip(Pop, Exp, NewStud, NewTotal)), 
                  index = [i for i in range(0,len(NewStud))], 
                  columns=['Population_Change', 'Expense_Change', 'New_Student_Activity_Fee', 'New_Total_Fee'])

# Group this scenario analysis 
df = df.groupby(['Population_Change', 'Expense_Change'], sort=False).max()

# Create Figure 
fig = plt.figure(figsize=(15,8))
ax = plt.subplot(111)

# Drop New Student Activity Fee Column. Analyze Only New Total Fee
df = df.drop(['New_Student_Activity_Fee'], axis=1)

########################### Not Working As Desired
sb.heatmap(df)
########################### 

1 Ответ

0 голосов
/ 05 апреля 2020

Ваш DataFrame имеет неправильную форму для seaborn.heatmap(). Например, в результате операции groupby у вас есть Population_Change и Expense_Change в качестве MultiIndex, который будет использоваться только для маркировки функцией построения графика.

Таким образом, вместо groupby сначала удалите лишний столбец, а затем сделайте следующее:

df = df.pivot(index='Expense_Change', columns='Population_Change', values='New_Total_Fee')

Затем seaborn.heatmap(df) должен работать так, как ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...