Как я могу сделать так, чтобы размер вспомогательных участков тепловой карты matplotlib отражал количество строк в данных для каждого вспомогательного участка? - PullRequest
0 голосов
/ 09 июня 2018

Я использую matplotlib в python для создания тепловых карт для различных кластеров, которые я создал с помощью кластеризации k-средних.Прямо сейчас я могу получить эту цифру:

Heatmap

Но я хочу, чтобы количество строк в каждом кластере отражалось в размере тепловой карты,вместо этого все они масштабируются до одинакового размера.Является ли GridSpec правильным способом сделать это?Это единственное, что я могу найти, пытаясь найти решение Google, но оно кажется более подходящим для ситуаций, когда у вас есть вспомогательные участки в сетке, и вы хотите, чтобы определенный вспомогательный участок охватывал более одной строки или столбца в сетке.В этой ситуации я буду создавать сетку с тысячами строк и указывать каждому подплощадке охватывать сотни из них.Это все еще лучший способ сделать это?

Редактировать: Если мой вопрос не ясен, я в конечном итоге пытаюсь создать такую ​​фигуру.Обратите внимание, как легко увидеть на левом рисунке, что кластер E больше, чем кластер F:

enter image description here

1 Ответ

0 голосов
/ 09 июня 2018

GridSpec имеет аргумент height_ratios.Вы можете установить его в список вертикальной формы тепловых карт.

import numpy as np
import matplotlib.pyplot as plt

data = [np.random.rand(n,8) for n in [3,7,10,4]]

fig, axes = plt.subplots(nrows=len(data), 
                         gridspec_kw=dict(height_ratios=[d.shape[0] for d in data]))

for ax, d in zip(axes, data):
    ax.imshow(d)
    ax.tick_params(labelbottom=False)

plt.show()

enter image description here

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