更改mplot3d-BarPlot中的Y刻度和条形外观

时间:2019-02-21 20:40:33

标签: python mplot3d

我正在研究3d条形图,以绘制不同频段的能量,并将其与其他样本进行比较。守则显示了我目前的工作状态。但是,我没有正确的y刻度,我希望它们与相应的频域相似,因此我坚持这样做。 第二个问题:我想使用相等大小的刮板,而不是 矩形条。我试图更改dx / y和x / ypos,但这似乎不起作用。也许有人可以在这里帮助我。 但是我也愿意向Ideas寻求更合适的图,以比较这四个样本的频域能量,如果您有任何建议,我将很高兴听到它们!

最佳问候 巴斯蒂安

Frequency_mean_std_df是pd-DataFrame,具有每个样本86个频率带(能量值)(此处不重要的其他内容)

x=np.linspace(0, 10, 86)
data_list=[]
for i in np.arange(86):
data = [
np.log(Frequency_mean_std_df['w01_HvR_01_mean'] [i]),
np.log(Frequency_mean_std_df['w02_HvR_01_mean'] [i]),
np.log(Frequency_mean_std_df['w03_HvR_01_mean'] [i]),
np.log(Frequency_mean_std_df['w04_HvR_01_mean'][i])]

data_list.append(data)
data_array = np.array(data_list)
data = data_array
column_names = ['HvR_01','HvR_02','HvR_03','HvR_04']
row_names = x

fig = plt.figure()
ax = Axes3D(fig)

lx = len(data[0])            # Work out matrix dimensions
ly = len(data[:, 0])
xpos = np.arange(0, lx, 1)    # Set up a mesh of positions
ypos = np.arange(0, ly, 1)
xpos, ypos = np.meshgrid(xpos, ypos)

xpos = xpos.flatten()   # Convert positions to 1D array
ypos = ypos.flatten()
zpos = np.zeros(lx*ly)

dx = np.ones_like(zpos)
dy = dx.copy()
dz = data.flatten()

cs = ['r', 'g', 'b', 'y'] * ly

ax.bar3d(xpos, ypos, zpos, dx, dy, dz, color=cs)
ax.w_xaxis.set_ticklabels(column_names)
ax.w_yaxis.set_ticklabels(row_names[0:85])
ax.set_xlabel('Samples')
ax.set_ylabel('Frequency [Hz]')
ax.set_zlabel('Energy [log_dB]')

plt.show()

Image of the actual Plot

0 个答案:

没有答案