2013-07-11 3 views
2

Это может показаться тривиальным, но я не могу найти решение в PYTHON. Нет проблем с ROOT или MATLAB.2D-гистограмма из массива 3x3 в PYTHON

Итак, у меня есть массив 3x3, и я хотел бы, чтобы каждый элемент в массиве представлял высоту (частоту) бина. У меня должна быть гистограмма с 9 ящиками. Вот пример того, что я пытался.

import numpy as np 
import matplotlib.pyplot as plt 

H = np.array([[21,33,6],[25,20,2],[80,40,0]]) 

hist, bin = np.histogramdd(H, bins=3) 

center = 0.5*(bin[:-1] + bin[1:]) 

plt.bar(center, hist) 
plt.show() 

Я попытался histogram2D, я просто не могу найти, чтобы получить эту работу с питоном. Заранее спасибо за любую помощь по этому поводу.

ответ

1

Если им не ошибаюсь не должно это быть просто:

H=H.reshape(-1) 
plt.bar(np.arange(H.shape[0]),H) 

Вы также можете сделать 3D гистограмму:

extent = [0,2,0,2] 
plt.imshow(H, extent=extent, interpolation='nearest') 
plt.colorbar() 
plt.show() 

3D Bar гистограмму:

from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 
import numpy as np 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
for z,height in enumerate(H): 
    cs = [c] * len(xs) 
    cs[0] = 'c' 
    ax.bar(np.arange(3), height, zs=z, zdir='y', color=cs, alpha=0.8) 

ax.set_xlabel('X') 
ax.set_ylabel('Y') 
ax.set_zlabel('Z') 

plt.show() 

выше должен работать , У меня нет моего ноутбука со мной в данный момент. Еще один пример можно найти: here. Отличный пример для 3D-баров можно найти here.

+0

Спасибо, это именно то, что мне нужно. Любой шанс, что вы знаете, как я могу отобразить это как обычную трехмерную гистограмму с барами. Еще раз спасибо. – user1175720

+0

Еще раз спасибо за помощь. – user1175720