使用2D数组绘制直方图

时间:2016-09-23 03:18:46

标签: python arrays numpy histogram

import matplotlib.pyplot as plt
import numpy as np 
import xlrd
import xlwt

wb = xlrd.open_workbook('Scatter plot.xlsx')
sh1 = wb.sheet_by_name('T180')
sh2=wb.sheet_by_name("T181")
sh3=wb.sheet_by_name("Sheet1")

x= np.array([sh1.col_values(7, start_rowx=50, end_rowx=315)])
x1= np.array([sh2.col_values(1, start_rowx=48, end_rowx=299)])

y=np.array([sh1.col_values(2, start_rowx=50, end_rowx=299)])
y1= np.array([sh2.col_values(2, start_rowx=48, end_rowx=299)])

print x

plt.hist(x,bins=50)
plt.xlabel("dx (micron)")
plt.ylabel("dy (micron)")
plt.show()

正如您所见,此代码可以获得链接中的图形。为什么这个直方图是这样的?

enter image description here

我该如何解决?提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

x的形状为(1, 265),它是一个2-dim数组,您需要先将其转换为1-dim数组:

plt.hist(x.ravel(), bins=50)

答案 1 :(得分:0)

是的,根据HYRY的建议,它运作得很好。感谢@ HYRY。

 plt.hist(x.ravel(),bins=100,histtype="step",label="Before Translation")