0

Цветовой график 2D массива в matplotlib

391

Описание проблемы

Я думал, что это будет очень просто, но у меня возникли трудности с поиском понятного примера, который бы соответствовал моим требованиям.

В общем, я хочу создать фазовые диаграммы и, предположим, у меня есть 2D массив. Как я могу заставить matplotlib преобразовать этот массив в график, к которому можно будет добавить заголовки, оси и легенды (цветовые шкалы)?

Мне нужна очень простая минималистская реализация, которая использует только необходимые функции и будет работать с любым 2D массивом.

Я уверен, что это просто, и, возможно, я что-то не так понимаю, но мне действительно непросто с этим.

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

import numpy as np
import matplotlib as ml
import matplotlib.pyplot as plt

H = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]  # Исправил скобки

fig = plt.figure(figsize=(6, 3.2))

ax = fig.add_subplot(111)
ax.set_title('colorMap')
X,Y = np.meshgrid(xedges, yedges)  # Здесь отсутствуют определения xedges и yedges
plt.pcolormesh(X, Y, H)
ax.set_aspect('equal')

cax = fig.add_axes([0.12, 0.1, 0.78, 0.8])
cax.get_xaxis().set_visible(False)
cax.get_yaxis().set_visible(False)
cax.patch.set_alpha(0)
cax.set_frame_on(False)
plt.colorbar(orientation='vertical')
plt.show()

Может кто-то подсказать, как правильно сделать этот график с использованием 2D массива?

1 ответ(ов)

0

Ваш пример не работает, так как X и Y не определены. Вместо использования pcolormesh давайте воспользуемся imshow. Вот исправленный код:

import numpy as np
import matplotlib.pyplot as plt

H = np.array([[1, 2, 3, 4],
              [5, 6, 7, 8],
              [9, 10, 11, 12],
              [13, 14, 15, 16]])  # добавил некоторые запятые и код для создания массива

fig = plt.figure(figsize=(6, 3.2))

ax = fig.add_subplot(111)
ax.set_title('colorMap')
plt.imshow(H)
ax.set_aspect('equal')

cax = fig.add_axes([0.12, 0.1, 0.78, 0.8])
cax.get_xaxis().set_visible(False)
cax.get_yaxis().set_visible(False)
cax.patch.set_alpha(0)
cax.set_frame_on(False)
plt.colorbar(orientation='vertical')
plt.show()

Убедитесь, что вы импортировали необходимые библиотеки, и код должен работать корректно.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь