arrays - 如何在 matplotlib 中绘制 2D 强度图?

标签 arrays matplotlib plot scatter-plot imshow

我有一个 Nx3 数组,它存储 N 坐标中的值。第一列和第二列分别对应于 x 和 y 坐标,第三列表示该坐标处的值。我想绘制二维强度图,最好的方法是什么?

如果坐标间隔均匀,那么我可以使用meshgrid,然后使用imshow,但在我的数据中,坐标间隔不均匀。此外,数组非常大,N~100000,并且值(第三列)跨越几个数量级(所以我应该使用对数图?)。绘制这样的图表的最佳方法是什么?

最佳答案

您可以使用griddata将所有100000点处的数据插值到统一网格(例如100 x 100),然后使用颜色的对数缩放来绘制所有内容,

x = data[:,0]
y = data[:,1]
z = data[:,2]

# define grid.
xi = np.linspace(np.min(x),np.max(x),100)
yi = np.linspace(np.min(y),np.max(y),100)

# grid the data.
zi = griddata(x,y,z,xi,yi,interp='linear')

#pcolormesh of interpolated uniform grid with log colormap
plt.pcolormesh(xi,yi,zi,norm=matplotlib.colors.LogNorm())

plt.colormap()
plt.show()

我没有测试过这个,但基本想法应该是正确的。这样做的优点是您不需要知道原始(大)数据集,并且可以简单地使用网格数据 xi、yi 和 zi。

另一种方法是为散点图着色,

plt.scatter(x, y, c=z,edgecolors='none', norm=matplotlib.colors.LogNorm())

并关闭点的外边缘,使它们组成连续的图片。

关于arrays - 如何在 matplotlib 中绘制 2D 强度图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39333235/

相关文章:

python - SymPy 的多彩图

java 嵌套 JSONArray

python : Mouse click coordinates as simply as possible

python - 使用 Line2D 在 matplotlib 中绘制线条

python - Pandas 与 twinx 一起绘图

matlab - 将多条线绘制为热图

java - ImageJ 中一幅图中的 vector (Java)

javascript - 如何从 AngularJS 中的对象数组创建一个类似于对象的空对象?

c++ - 为什么我可以使用以 0 大小 : Char ch[0]; 启动的数组

python - 如何在除特定列索引之外的每一行中修改 Numpy 二维数组?