Я пытаюсь разобраться с тем, как использовать возвращаемые значения hist2d. Я вижу, что он возвращает 2d массив («объект гистограммы»), а также ребра бина и изображение. Я пытаюсь создать две гистограммы (из некоторых физических данных), нормализовать их, вычесть их (т.е. вычесть значения бина), а затем гистограмму, что осталось.
Можно начать с этого:
h1 = plt.hist2d(x1, y1,bins=(100,100),normed=True)
h2 = plt.hist2d(x2, y2,bins=(100,100),normed=True)
На самом деле длины h1 и h2 равны 4, а h1 [0] - это двумерный массив со значениями бина. Мне не совсем ясно, что такое h1 1 , h1 2 и h1 [3], но вычитание их приводит к массивам из 0. Однако я могу вычесть h1 [0] и h2 [0] и получить то, что выглядит как значимые значения bin:
h1 = plt.hist2d(x1, y1,bins=(100,100),normed=True)
h2 = plt.hist2d(x2, y2,bins=(100,100),normed=True)
H = h1[0] - h2[0]
Теперь вопрос в том, как я могу сделать гистограмму этих новых значений? Я мог бы написать через h1 [0], но даже тогда, как я могу заново отобразить Hist2D в том же формате, не используя разные типы функций? Можно сделать нечто подобное, используя histogram2d, и, возможно, использовать сетку, но результаты получаются ужасными:
h1, xedges, yedges = np.histogram2d(x1, y1,bins=(100,100),normed=True)
h2, xedges, yedges = np.histogram2d(x2, y2,bins=(100,100),normed=True)
H = h1 - h2
fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(121, title='imshow: square bins')
plt.imshow(H, interpolation='nearest', origin='low',extent=[xedges[0], xedges[-1], yedges[0], yedges[-1]])
ax = fig.add_subplot(122, title='pcolormesh: actual edges')
X, Y = np.meshgrid(xedges, yedges)
ax.pcolormesh(X, Y, H)
plt.show()
![Subtracted histograms](https://i.stack.imgur.com/KM3QL.png)
Как отметил один из комментаторов, имеет смысл, что эти графики перекошены, потому что они теперь (100,100), а не исходные оси, которые были (0,1000), (- 100,100). Это можно исправить:
plt.imshow(H, interpolation='nearest', origin='low')
Тем не менее, выходной сигнал странным образом поворачивается. Я могу сказать, потому что смутный туманный бар должен быть вертикальным:
![unsquished output](https://i.stack.imgur.com/QywEV.png)