如何制作matplotlib密度图

如何制作matplotlib密度图,matplotlib,Matplotlib,假设我有两个相同长度的列表,x和y。此长度不是固定的,但始终非零。它们是非负点的x和y值 我想创建一个像这样的颜色密度贴图 以下是我从互联网上找到的几个地方借的东西: density = stats.gaussian_kde([x,y]) color = density([x,y]) x1 = np.array(x) y1 = np.array(y) xmin = x1.min() xmax = x1.max() ymin = y1.min() ymax = y1.max() xscale =

假设我有两个相同长度的列表,
x
y
。此长度不是固定的,但始终非零。它们是非负点的x和y值

我想创建一个像这样的颜色密度贴图

以下是我从互联网上找到的几个地方借的东西:

density = stats.gaussian_kde([x,y])
color = density([x,y])
x1 = np.array(x)
y1 = np.array(y)
xmin = x1.min()
xmax = x1.max()
ymin = y1.min()
ymax = y1.max()
xscale = (xmax-xmin)/100
yscale = (ymax-ymin)/100
X, Y = np.mgrid[xmin:xmax:xscale, ymin:ymax:yscale]
positions = np.vstack([X.ravel(), Y.ravel()])
Z = np.reshape(density(positions).T, X.shape)
cmap = plt.get_cmap("hot")
plt.imshow(np.rot90(Z), cmap=cmap, extent=[xmin, xmax, ymin, ymax])
plt.scatter(x, y, c=color, cmap=cmap)
当我运行此代码时,绘图不会呈现;标题和标签混合在一起


当我调用imshow时,散点图显示完美,点上的密度颜色显示正确。

结果表明,该图正在渲染,但由于
x
的值远远大于
y
的值,渲染的图形没有高度。设置
aspect=“auto”
修复了它:

plt.imshow(np.rot90(Z), cmap=cmap, extent=[xmin, xmax, ymin, ymax], aspect="auto")