python画圆形密度图_python – matplotlib中的密度图(heatmaps)

这有望让你开始走上正轨,但我肯定会推荐阅读

pcolor和

pcolormesh的文档.

您已注释#使用最近邻插值绘制密度图,但由于Z是一维数组,因此密度图没有任何二维密度数据.密度图最容易通过使用np.histogram2d创建,我将在下面使用您的数据显示.

Z, xedges, yedges = np.histogram2d(x, y)

Z现在是一个2D数组,其中包含有关x,y坐标分布的信息.这种分布可以像pcolormesh一样绘制

plt.pcolormesh(xedges, yedges, Z.T)

在获得像您发布的图像之前的一些方法,但它应该解释您的错误并帮助您走上正确的轨道.

更新:更好,更平滑的密度图

假设您有两个1D数组,x和y,您可以使用内核密度估计来获得更好的热图,方法如下[reference],

from scipy.stats.kde import gaussian_kde

k = gaussian_kde(np.vstack([x, y]))

xi, yi = np.mgrid[x.min():x.max():x.size**0.5*1j,y.min():y.max():y.size**0.5*1j]

zi = k(np.vstack([xi.flatten(), yi.flatten()]))

现在您可以使用pcolormesh或contourf绘制高斯KDE,具体取决于您所追求的效果/美学效果

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(7,8))

ax1 = fig.add_subplot(211)

ax2 = fig.add_subplot(212)

# alpha=0.5 will make the plots semitransparent

ax1.pcolormesh(xi, yi, zi.reshape(xi.shape), alpha=0.5)

ax2.contourf(xi, yi, zi.reshape(xi.shape), alpha=0.5)

ax1.set_xlim(x.min(), x.max())

ax1.set_ylim(y.min(), y.max())

ax2.set_xlim(x.min(), x.max())

ax2.set_ylim(y.min(), y.max())

# you can also overlay your soccer field

im = plt.imread('soccerPitch.jpg')

ax1.imshow(im, extent=[x.min(), x.max(), y.min(), y.max()], aspect='auto')

ax2.imshow(im, extent=[x.min(), x.max(), y.min(), y.max()], aspect='auto')

我得到这个图像:

c6nG4.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值