【问题标题】:Contour Labels not showing up轮廓标签未显示
【发布时间】:2015-08-17 04:48:59
【问题描述】:

我正在尝试在 matplotlib 中填充轮廓图的顶部覆盖一些大气数据。但是,我的轮廓标签并不总是出现在屏幕上。下面是一个例子:

如您所见,轮廓标签仅出现在最里面的几个轮廓上。

知道我的轮廓范围之前定义为

list(range(950,1052,4))

我有以下代码来实际绘制:

parallels = np.arange(0.,90,5.)
basem.drawparallels(parallels,labels=[1,0,0,0],fontsize=10)
# draw meridians
meridians = np.arange(180.,360.,5.)
basem.drawmeridians(meridians,labels=[0,0,0,1],fontsize=10)
basem.drawstates()
basem.drawcountries()
if clevs != 0:

    cs = basem.contourf(x,y, plotted_var, clevs)
    cl = basem.contour(x,y, plotted_var, clevsl, colors='k')
    plt.clabel(cl, fmt="%1.0f", fontsize=8)

else:
    cs = basem.contourf(x,y, plotted_var, cmap=plt.get_cmap(colorbar), 
        vmin = vmin, vmax = vmax)

cbar = basem.colorbar(cs, location='bottom', pad = "5%")

cbar.set_label(units)

另外,我的底图定义是:

basem = Basemap(width=5800000,height=3000000,
        rsphere=(6378137.00,6356752.3142),\
        resolution='h',area_thresh=1000.,projection='lcc',\
        lat_1=45.,lat_2=55,lat_0=40,lon_0=-102.)

这是一个错误还是只是我遗漏了什么?如果可以的话,我会尽量避免使用手册。

输入数据是一个全球数据集(GFS 天气模型)。 x, y 通过以下方式获得:

lons2, lats2 = np.meshgrid(lons, lats)

x,y = basem(lons2, lats2)

lons、lats 分别是:

lons = [0.0, 0.25, 0.5, 0.75, 1.0, ..., 359.75, 360.0]
lats = [-90, -89.75, ..., 89.75, 90]

【问题讨论】:

  • 我可以理解原始数据可能在许可协议或其他内容下 - 但xyplotted_var 的一些代表性近似值对于能够测试/复制很有用这个。
  • 输入数据为标准GFS气象数据。我将使用一些数据表示来编辑帖子。

标签: python matplotlib matplotlib-basemap


【解决方案1】:

我似乎已经解决了这个问题:

我要做的就是将数据绑定到底图上可以看到的内容。我的输入数据集是一个全局数据集,当我绑定它时(见下面的白色区域),轮廓标签主要出现在地图边界内。这似乎仍然是一个错误——我对显示区域的选择会改变几乎所有其他气象图形程序(如 GrADS)中等高线标签的位置,但我现在将其标记为已回答。

【讨论】:

    猜你喜欢
    • 2014-10-06
    • 2015-06-25
    • 2022-10-05
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    相关资源
    最近更新 更多