Как отобразить тепловую карту для большого массива

#matplotlib #seaborn #heatmap

#matplotlib #сиборн #тепловая карта

Вопрос:

У меня есть большой набор данных, из которого я получаю квадратную матрицу, которую я хотел бы визуализировать как тепловую карту. Я использую Matplotlib и Seaborn. К сожалению, похоже, что это работает только для относительно небольшого объема данных.

         size = 10000
        similarity_matrix = np.random.rand(size, size)

        fig, ax = plt.subplots()
        sns.heatmap(similarity_matrix, vmin=0, vmax=1)

        plt.savefig("matrix.png")
  

Это перестает работать приблизительно size=6000 , что приводит к белой тепловой карте.

Тепловая карта

Ответ №1:

imshow или matshow , кажется, работает нормально:

 np.random.seed(42)
size = 10000
similarity_matrix = np.random.rand(size, size)
plt.imshow(similarity_matrix, cmap='hot')
plt.colorbar()
  

Вывод:

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

Ответ №2:

  • Исходный код не сгенерировал для меня график
  • Изменив fig, ax = plt.subplots() на plt.figure(figsize=(14, 14)) , работал над созданием графика.
    • При figsize=(10, 10) этом рисунок не отображался в Jupyter, но правильное изображение было сохранено в файл.
    • Цифра, меньшая, чем figsize=(14, 14) , не будет отображаться в Jupyter.
 import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

# create matrix
size = 10000
similarity_matrix = np.random.rand(size, size)

# plot matrix

# create figure and set size
plt.figure(figsize=(14, 14))

# add heatmap
sns.heatmap(similarity_matrix, vmin=0, vmax=1)

# save the figure
plt.savefig('test.png', dpi=600)

# show the figure; this was slow
plt.show()
  

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