3D-график показывает неправильные метки осей (ось X имеет имя оси Y, а ось Y имеет имя оси X)

#python #matplotlib #plot

#python #matplotlib #график

Вопрос:

Я хочу создать 3D-гистограмму, но я понятия не имею, почему ось X имеет метку Y, а ось Y — ось X. Что не так?

 xAmplitudes = ([0 for i, j in zip(x, width)])
yAmplitudes = centre_y 

x = np.array(xAmplitudes)   #turn x,y data into numpy arrays
y = np.array(yAmplitudes)

fig = plt.figure()          #create a canvas, tell matplotlib it's 3d
ax = fig.add_subplot(111, projection='3d')


#make histogram stuff - set bins - I choose 50x50 because I have a lot of data
hist, xedges, yedges = np.histogram2d(x, y, bins=(50,50))
xpos, ypos = np.meshgrid(xedges[:-1] xedges[1:], yedges[:-1] yedges[1:])

xpos = xpos.flatten()/2.
ypos = ypos.flatten()/2.
zpos = np.zeros_like (xpos)

dx = xedges [1] - xedges [0]
dy = yedges [1] - yedges [0]
dz = hist.flatten()

ax.bar3d(xpos, ypos, zpos, dx, dy, dz, color=blue, zsort='average')
plt.xlabel("X ")
plt.ylabel("Y ")
  

график

Ответ №1:

Обратите внимание, что в numpy.histogram2d документации говорится о выходном массиве:

«Двумерная гистограмма выборок x и y. Значения в x гистограммируются вдоль первого измерения, а значения в y гистограммируются вдоль второго измерения».

Это означает, что вы хотели бы транспонировать результирующий массив, вероятно, как

 dz = hist.T.flatten()