如何制作大型二维散点图的 contour/density 图
How to make a contour/density plot of a large 2D scatter plot
我有一个过于拥挤的散点图,我正在尝试创建等值线图或密度图以查看我的数据中是否有任何不同的人口。我尝试了以下代码,但出现错误:
too many values to unpack (expected 2)
我的代码是:
x = CDM_300[:,[1]]
y = CDM_300[:,[2]]
# Evaluate a gaussian kde on a regular grid of nbins x nbins over data extents
nbins=300
k = kde.gaussian_kde([x,y])
xi, yi = np.mgrid[x.min():x.max():nbins*1j, y.min():y.max():nbins*1j]
zi = k(np.vstack([xi.flatten(), yi.flatten()]))
# Make the plot
plt.pcolormesh(xi, yi, zi.reshape(xi.shape))
plt.show()
# Change color palette
plt.pcolormesh(xi, yi, zi.reshape(xi.shape), cmap=plt.cm.Greens_r)
plt.show()
CDM_300
是一个 (23800, 3) 数组,如果我尝试 np.meshgrid
数据,我的笔记本电脑就会崩溃。
问题似乎出在您为数据建立索引的方式上。当您执行 [:, [1]]
时,数据的形状变为 (23800, 1)
并且每个元素本身就是一个数组。
使用以下索引 ,不带 第二个索引周围的额外 []
。
x = CDM_300[:, 1]
y = CDM_300[:, 2]
我有一个过于拥挤的散点图,我正在尝试创建等值线图或密度图以查看我的数据中是否有任何不同的人口。我尝试了以下代码,但出现错误:
too many values to unpack (expected 2)
我的代码是:
x = CDM_300[:,[1]]
y = CDM_300[:,[2]]
# Evaluate a gaussian kde on a regular grid of nbins x nbins over data extents
nbins=300
k = kde.gaussian_kde([x,y])
xi, yi = np.mgrid[x.min():x.max():nbins*1j, y.min():y.max():nbins*1j]
zi = k(np.vstack([xi.flatten(), yi.flatten()]))
# Make the plot
plt.pcolormesh(xi, yi, zi.reshape(xi.shape))
plt.show()
# Change color palette
plt.pcolormesh(xi, yi, zi.reshape(xi.shape), cmap=plt.cm.Greens_r)
plt.show()
CDM_300
是一个 (23800, 3) 数组,如果我尝试 np.meshgrid
数据,我的笔记本电脑就会崩溃。
问题似乎出在您为数据建立索引的方式上。当您执行 [:, [1]]
时,数据的形状变为 (23800, 1)
并且每个元素本身就是一个数组。
使用以下索引 ,不带 第二个索引周围的额外 []
。
x = CDM_300[:, 1]
y = CDM_300[:, 2]