如何制作大型2D散点图的轮廓/密度图

时间:2019-06-20 10:29:42

标签: python matplotlib scatter-plot contour density-plot

我有一个过于拥挤的散点图,我试图创建一个等高线图或密度图,以查看我的数据中是否有任何不同的总体。我尝试了以下代码,但出现错误:

  

要解包的值太多(预期为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 个答案:

答案 0 :(得分:0)

问题似乎是由您为数据建立索引的方式引起的。当您执行[:, [1]]时,数据的形状将变为(23800, 1),并且每个元素本身就是一个数组。

使用以下索引在第二个索引周围没有,而没有多余的[]

x = CDM_300[:, 1]
y = CDM_300[:, 2]