Цветовой график 2D массива в matplotlib
Описание проблемы
Я думал, что это будет очень просто, но у меня возникли трудности с поиском понятного примера, который бы соответствовал моим требованиям.
В общем, я хочу создать фазовые диаграммы и, предположим, у меня есть 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 ответ(ов)
Ваш пример не работает, так как 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()
Убедитесь, что вы импортировали необходимые библиотеки, и код должен работать корректно.
Когда использовать cla(), clf() или close() для очистки графика?
Скрытие текстов осей в графиках Matplotlib
Почему не работает plt.savefig?
Как подогнать синусоиду к данным с помощью pylab и numpy?
Построение гистограммы на логарифмической шкале с помощью Matplotlib