Метод PolyCollection
.get_array()
возвращает количество отсчетов для каждого шестиугольника.Метод .get_offsets()
возвращает центр каждого шестиугольника.
import numpy as np; np.random.seed(42)
import matplotlib.pyplot as plt
data = np.random.uniform(1.0, 10, size=(50,2))
pc = plt.hexbin(data[:,0], data[:,1], bins=None,gridsize=(7,4), cmap="viridis_r",
vmin=0, vmax=5, mincnt=1.0)
cb = plt.colorbar(label='count')
cb.set_label('COUNT',size=20)
cb.ax.tick_params(labelsize=20)
cb.set_alpha(1)
counts = pc.get_array()
positions = pc.get_offsets()
print(counts[:10])
print(positions[:10])
for c, (x,y) in zip(counts[:10],positions[:10]):
plt.text(x,y,"{:d}".format(int(c)), ha="center", va="center")
plt.show()
выведет
[1. 1. 1. 2. 2. 2. 1. 2. 1. 3.]
[[1.04969905 1.41805371]
[1.04969905 3.53403589]
[1.04969905 7.76600025]
[1.04969905 9.88198243]
[2.28920799 5.65001807]
[2.28920799 7.76600025]
[2.28920799 9.88198243]
[3.52871693 1.41805371]
[3.52871693 3.53403589]
[3.52871693 5.65001807]]
и покажет
![enter image description here](https://i.stack.imgur.com/Ck7iK.png)
Например, первый шестиугольник центрируется в x=1.04969905, y=1.41805371
и имеет одну точку в нем (количество == 1).Десятый шестиугольник центрируется в x=3.52871693, y=5.65001807
и имеет 3 точки (количество == 3).