Python 使用contourf以对数比例绘制贴图颜色(z轴颜色编码)?
我正在尝试制作一张三维数据的二维地图。由于我想要在2D中投影的z轴数量和颜色代码非常小,并且峰值非常重要,所以我决定以对数比例显示它们。我已经编写了这段代码,但首先,它不能正确地显示等高线图,其次,当每种颜色的编号在其预期位置时,颜色条收缩到顶部。Python 使用contourf以对数比例绘制贴图颜色(z轴颜色编码)?,python,matplotlib,scipy,Python,Matplotlib,Scipy,我正在尝试制作一张三维数据的二维地图。由于我想要在2D中投影的z轴数量和颜色代码非常小,并且峰值非常重要,所以我决定以对数比例显示它们。我已经编写了这段代码,但首先,它不能正确地显示等高线图,其次,当每种颜色的编号在其预期位置时,颜色条收缩到顶部。 我还想充分平滑x-y平面,但使用高斯滤波器,它们都缩小了 ny, nx = 100, 100 nstep=8 loglvl=np.logspace(np.log10(0.0000001),np.log10(max(zp)),nstep) bins_x
我还想充分平滑x-y平面,但使用高斯滤波器,它们都缩小了
ny, nx = 100, 100
nstep=8
loglvl=np.logspace(np.log10(0.0000001),np.log10(max(zp)),nstep)
bins_x=np.linspace(min(xp),max(xp),nx)
bins_y=np.linspace(min(yp),max(yp),ny)
H, xedges, yedges = np.histogram2d(xp, yp, (bins_x,bins_y),weights=zp)
smooth=0.05
Hsmooth = scipy.ndimage.filters.gaussian_filter(H.T, smooth)
xcenters = (xedges[1:] + xedges[:-1])/2.
ycenters = (yedges[1:] + yedges[:-1])/2.
Ygrid, Xgrid = np.meshgrid(ycenters, xcenters)
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1] ]
plt.contourf(Xgrid,Ygrid,Hsmooth,levels=loglvl,extent=extent)
plt.colorbar()
plt.show()
我的数据示例:
xp yp zp
7781.36 44.40 0.00000
6776.45 37.61 0.00000
3913.00 37.88 0.00000
3884.64 34.13 0.00000
3174.49 32.75 0.00372
4396.89 27.54 0.03209
3742.59 31.88 0.00287
2590.11 22.88 0.00000
1930.72 25.95 0.00000
4979.53 25.87 0.00156
3023.91 21.71 0.00340
3411.53 23.02 0.00000
6606.04 21.12 0.00026
4420.83 20.72 0.00000
3847.91 20.67 0.00008
2911.36 19.28 0.00000
5179.67 19.14 0.00000
3085.58 19.02 0.00000
4150.57 18.82 0.00000
1417.97 19.03 0.00000
7948.60 16.02 0.01354
4560.82 14.73 0.00000
4407.12 15.79 0.00021
4767.00 13.68 0.00000
4665.62 13.58 0.00000
3195.62 14.71 0.01170
3866.52 25.97 0.00000
3448.50 13.31 0.00010
7473.90 10.73 0.00474
4548.85 10.82 0.00086
1563.84 11.19 0.00006
4171.65 10.52 0.00002
2617.41 10.08 0.00211
2200.51 10.28 0.00062
1295.38 10.38 0.00811
3172.31 9.75 0.00200
4913.99 8.32 0.00037
6435.21 8.40 0.00673
3611.03 10.31 0.00000
3795.64 48.01 0.00000
5170.69 32.81 0.00000
2256.22 22.38 0.00000
4703.77 17.78 0.00059
2845.35 10.12 0.00028
3275.11 28.39 0.03358
4830.32 26.12 0.00000
7653.76 13.43 0.00003
3419.52 13.26 0.00000
2174.30 13.29 0.00016
7118.04 19.40 0.00821
由于某些zp数为零,因此也存在对轮廓函数使用对数范数的问题。
在我的数据中,有一些区域被屏蔽,没有任何点,因此我也希望这些区域在地图中得到充分显示。我怎样才能让我的代码工作 您能否以一种易于复制/粘贴到解释器中的方式发布示例数据?@ali\m我如何在这里发布数据?是否可以将ascii文件附加到post?如果我是你,我将只粘贴值的代表性子集,并且我将包括对
np.array
的整个调用,例如xp=np.array([7781.36,…,5179.61])
。为了便于阅读,可以跨行打断括号中的语句。如果你能提供一个拷贝/粘贴,你就有更好的机会得到你问题的好答案!您也可以使用或,但它是。