使用contourf在Log scale中绘制映射颜色(z轴颜色编码)?

时间:2014-02-05 18:53:01

标签: python matplotlib scipy

我正在尝试制作三维数据的2D地图。由于我想投影的z轴的数量和2D中的颜色代码非常小,并且峰值非常重要,所以我决定以对数比例显示它们。我写过这段代码,但首先,它没有正确显示等高线图,其次,颜色条缩小到顶部,而每种颜色的数字都在预期的位置。
我也想要充分平滑x-y平面,但是使用gaussian_filter它们都会缩小。

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数为零,因此也存在使用LogNorm for contourf的问题。 在我的数据中,有些区域已被屏蔽,并且没有任何点,所以我也希望这些区域已经充分显示在地图中。
我怎么能让我的代码工作?

0 个答案:

没有答案