Вы можете использовать функцию построения pcolormesh
, которая позволяет указывать координаты ваших данных вместо imshow
.Вот несколько примеров:
![enter image description here](https://i.stack.imgur.com/tGf0N.png)
![enter image description here](https://i.stack.imgur.com/D0Qiz.png)
И вот полный код, который использовался длясоздайте изображения выше:
import matplotlib.pyplot as plt
import numpy as np
def plotBinary(mmin=1, mmax=5):
x = np.arange(mmin-1, mmax+2)
cen = (x[:-1] + x[1:])/2
X,Y = np.meshgrid(cen, cen)
m = np.random.randint(mmin, mmax+1, X.shape)
plt.pcolormesh(X, Y, m, cmap='binary')
plotBinary()
plt.show()
plotBinary(3, 10)
plt.show()
Объяснение координат в pcolormesh
pcolormesh
ожидает, что координаты X
и Y
будут переданы в виде сеток.Учитывая, что у вас есть одномерные списки x
и y
ваших координат x и y, вы можете вызвать X,Y
= np.mesgrid(x, y)
, чтобы сгенерировать для вас координатные сетки X
и Y
.Таким образом, вам не нужно беспокоиться о фактическом синтаксисе координатных сеток, что приятно.
В приведенной выше функции plotBinary
, cen
- это список центров блоков.Это также наш список координат x
и y
, поэтому необходимые координатные сетки генерируются путем вызова np.meshgrid(cen, cen)
с cen
в качестве обоих аргументов.