我有一个大型的数据集,需要把我的图分成网格并计算每个网格方格内的点数。我正在遵循这里所述的方法:
以下是我简化后的代码:
import numpy as np
import matplotlib.pyplot as plt
x = [ 1.83259571, 1.76278254, 1.38753676, 1.6406095, 1.34390352, 1.23045712, 1.85877565, 1.26536371, 0.97738438]
y = [ 0.04363323, 0.05235988, 0.09599311, 0.10471976, 0.1134464, 0.13962634, 0.17453293, 0.20943951, 0.23561945]
gridx = np.linspace(min(x),max(x),11)
gridy = np.linspace(min(y),max(y),11)
grid, _, _ = np.histogram2d(x, y, bins=[gridx, gridy])
plt.figure()
plt.plot(x, y, 'ro')
plt.grid(True)
plt.figure()
plt.pcolormesh(gridx, gridy, grid)
plt.plot(x, y, 'ro')
plt.colorbar()
plt.show()
问题出在网格识别绘图元素作为点出现的位置,但有些元素内部没有点;同样,在一些实际数据点出现的位置,网格并未将其识别为实际存在的点。 可能是什么原因导致这个问题?另外,很抱歉没有附上绘图,我是一个新用户,声望不够高。 更新:下面是生成100个随机点并尝试在2-D直方图中绘制它们的代码:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand(100)
y = np.random.rand(100)
gridx = np.linspace(0,1,11)
gridy = np.linspace(0,1,11)
grid, __, __ = np.histogram2d(x, y, bins=[gridx, gridy])
plt.figure()
plt.plot(x, y, 'ro')
plt.grid(True)
plt.figure()
plt.pcolormesh(gridx, gridy, grid)
plt.plot(x, y, 'ro')
plt.colorbar()
plt.show()
然而,当我运行它时,仍然遇到了之前的问题:点的位置和颜色与点-位置-密度不一致。当其他人运行这段代码时,是否也会出现这种情况?
第二次更新
为了防止重复,这里提供一个参数绘图的代码:
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(0,1,100)
x = np.sin(t)
y = np.cos(t)
gridx = np.linspace(0,1,11)
gridy = np.linspace(0,1,11)
#grid, __, __ = np.histogram2d(x, y, bins=[gridx, gridy])
grid, __, __ = np.histogram2d(x, y)
plt.figure()
plt.plot(x, y, 'ro')
plt.grid(True)
plt.figure()
plt.pcolormesh(gridx, gridy, grid)
plt.plot(x, y, 'ro')
plt.colorbar()
plt.show()
这让我觉得这可能是某种奇怪的缩放问题。尽管如此,我仍然完全迷失了...