измените конкретный размер строки в карте кластеров seaborn

#python #seaborn #cluster-analysis #visualization

#python #seaborn #кластерный анализ #визуализация

Вопрос:

Я использую seaborn clustermap для визуализации результатов кластеризации (каждая строка представляет отдельный кластер). Кроме того, у меня есть данные о том, какой процент от общего объема данных присваивается каждому кластеру. Интересно, как я могу добавить эту информацию в карту кластеров. Например, можно ли изменить высоту строки clustermap таким образом, чтобы каждая строка имела высоту, пропорциональную размеру кластера, который она представляет?

Ответ №1:

Просматривая документацию Seaborn и результирующие документы Matplotlib, я не думаю, что это возможно с помощью seaborn. Библиотека matplotlib позволит вам создавать pcolormesh (который использует Seaborn) любым удобным для вас способом.

Например, посмотрите на пример ниже. Вы можете указать значения x и y, которые определяют высоту и ширину строк / столбцов в заданной точке. Таким образом, с помощью matplotlib вы могли бы передать значения ширины, о которых вы говорили, и создать свою цветовую сетку, хотя весь процесс был бы не таким простым, как использование sns.clustermap(iris) !. Смотрите Код ниже для получения дополнительной информации.

  # evenly spaced integers
x1 = np.array([1,2,3,4,5,6])
y1 = np.array([1,2,3,4,5,6])

# uneven spacing between each item
x2 = np.array([1,1.5,3.8,4,5,6])
y2 = np.array([1,1.5,3,4.4,5,6])

# fill with random data
z = np.random.randint(0,32,25).reshape(nrows,ncols)

# create plots
fig, (ax1,ax2) = plt.subplots(nrows=2, ncols=1,figsize=(10,10))

ax1.pcolormesh(x1, y1, z, cmap='Blues', edgecolors='black')
ax2.pcolormesh(x2, y2, z, cmap='Blues', edgecolors='black')
plt.show()
  

Результат:

введите описание изображения здесь