Kes*_*rel 12 python numpy matplotlib matrix histogram
我是python的新手.
我有一个numpy矩阵,尺寸为42x42,其值在0-996范围内.我想用这个数据创建一个2D直方图.我一直在看教程,但他们似乎都展示了如何从随机数据而不是numpy矩阵创建2D直方图.
到目前为止,我已导入:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import colors
Run Code Online (Sandbox Code Playgroud)
我不确定这些是否是正确的导入,我只是想从我看到的教程中学到一些东西.
我有numpy矩阵,M其中包含所有值(如上所述).最后,我希望它看起来像这样:

显然,我的数据会有所不同,所以我的情节应该看起来不同.任何人都可以帮我一把吗?
编辑:为了我的目的,下面的Hooked的例子,使用matshow,正是我正在寻找的.
Hoo*_*ked 20
如果您有来自计数的原始数据,您可以使用plt.hexbin为您创建图(恕我直言这比方格更好):改编自以下示例hexbin:
import numpy as np
import matplotlib.pyplot as plt
n = 100000
x = np.random.standard_normal(n)
y = 2.0 + 3.0 * x + 4.0 * np.random.standard_normal(n)
plt.hexbin(x,y)
plt.show()
Run Code Online (Sandbox Code Playgroud)

如果你已经提到了矩阵中的Z值,只需使用plt.imshow或plt.matshow:
XB = np.linspace(-1,1,20)
YB = np.linspace(-1,1,20)
X,Y = np.meshgrid(XB,YB)
Z = np.exp(-(X**2+Y**2))
plt.imshow(Z,interpolation='none')
Run Code Online (Sandbox Code Playgroud)

unu*_*tbu 13
如果您不仅具有2D直方图矩阵而且还有基础(x, y)数据,那么您可以(x, y)根据2D直方图矩阵中的分箱计数值制作点和每个点的颜色的散点图:
import numpy as np
import matplotlib.pyplot as plt
n = 10000
x = np.random.standard_normal(n)
y = 2.0 + 3.0 * x + 4.0 * np.random.standard_normal(n)
xedges, yedges = np.linspace(-4, 4, 42), np.linspace(-25, 25, 42)
hist, xedges, yedges = np.histogram2d(x, y, (xedges, yedges))
xidx = np.clip(np.digitize(x, xedges), 0, hist.shape[0]-1)
yidx = np.clip(np.digitize(y, yedges), 0, hist.shape[1]-1)
c = hist[xidx, yidx]
plt.scatter(x, y, c=c)
plt.show()
Run Code Online (Sandbox Code Playgroud)
