Я все еще не совсем уверен, что вы ищете, но я думаю, вы хотите иметь imshow
сюжет, который использует шестиугольники, такие как hexbin
?
Может быть, это немного помогает:
import matplotlib.pyplot as plt
import numpy as np
# Generate array
A = np.zeros([8, 8], dtype=int)
A[2:6, 2:6] = np.random.randint(1, 10, size=(4, 4))
# Print array
print(A)
# `imshow` plot
plt.figure(figsize=(5,5))
plt.imshow(A, extent=(0, 8, 0, 8), origin='lower')
plt.colorbar()
# Rewrite array to get x and y values
# TODO: There has to be a better way than to use two `for` loops
X = []
Y = []
for y in range(len(A)):
for x, n in enumerate(A[len(A)-y-1]):
X += [x]*n
Y += [y]*n
# `scatter` plot to visualize rewritten array data
plt.figure(figsize=(5,5))
plt.scatter(X, Y)
# `hexbin` plot
plt.figure(figsize=(5,5))
plt.hexbin(X, Y, gridsize=5, extent=(0, 7, 0, 7))
plt.colorbar()
# show plots
plt.show()
Какие результаты для случайного массива A
[[0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0]
[0 0 3 7 3 3 0 0]
[0 0 3 5 8 1 0 0]
[0 0 4 8 7 3 0 0]
[0 0 1 7 9 3 0 0]
[0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0]]
в
imshow
![imshow](https://i.stack.imgur.com/NfSY0.png)
scatter
![scatter](https://i.stack.imgur.com/UsRwH.png)
hexbin
![hexbin](https://i.stack.imgur.com/VRa1O.png)
Я думаю, что вам может быть лучше, если вы выберете нестандартное решение, например, график рассеяния с нанесением шестиугольников с указанным вами цветом.