Python 如何仅使用pcolor/pcolormesh绘制栅格线
通过使用Python 如何仅使用pcolor/pcolormesh绘制栅格线,python,numpy,matplotlib,matplotlib-basemap,Python,Numpy,Matplotlib,Matplotlib Basemap,通过使用ax.axhline和ax.axvline我可以绘制网格网络,如下所示: 代码复制如下: lon_grid = np.linspace(113.5,115.49,36) lat_grid = np.linspace(37.40,38.78,30) lon_grid,lat_grid = np.linspace(xc1,xc2,36), np.linspace(yc1,yc2,30) for i in range(0,len(lon_grid),1): ax.ax
ax.axhline
和ax.axvline
我可以绘制网格网络,如下所示:
代码复制如下:
lon_grid = np.linspace(113.5,115.49,36)
lat_grid = np.linspace(37.40,38.78,30)
lon_grid,lat_grid = np.linspace(xc1,xc2,36), np.linspace(yc1,yc2,30)
for i in range(0,len(lon_grid),1):
ax.axvline(x=lon_grid[i], linestyle='-', color='black', linewidth=0.75, zorder=3)
for i in range(0,len(lat_grid),1):
ax.axhline(y=lat_grid[i], linestyle='-', color='black', linewidth=0.75, zorder=3)
这是我的问题
我可以使用pcolor/pcolrmesh来绘制网格的轮廓吗。要控制网格线的位置,可以设置记号的位置,例如:
fig, ax = plt.subplots(1, 1)
ax.grid(True, which='minor', axis='both', linestyle='-', color='k')
ax.set_xticks(lon_grid, minor=True)
ax.set_yticks(lat_grid, minor=True)
ax.set_xlim(lon_grid[0], lon_grid[-1])
ax.set_ylim(lat_grid[0], lat_grid[-1])
如果确实要使用
ax.pcolor
或ax.pcolormesh
,可以将facecolor
参数设置为'none'
,将edgecolor
参数设置为'k'
:
fig, ax = plt.subplots(1, 1)
x, y = np.meshgrid(lon_grid, lat_grid)
c = np.ones_like(x)
ax.pcolor(x, y, c, facecolor='none', edgecolor='k')
ax.set_xlim(lon_grid[0], lon_grid[-1])
ax.set_ylim(lat_grid[0], lat_grid[-1])
不过,这是一个非常值得怀疑的黑客行为。不管它值多少钱,
facecolor='none',edgecolor='black'
kwargs topcolormesh
都没有问题。我经常使用它来显示模型域的轮廓(类似于有限元网格)。它在处理非矩形或非规则间隔的网格时特别有用。@JoeKington很公平,我以前从未见过以这种方式使用pcolor
/pcolormesh
。对于在底图上绘制一个横向/纵向网格,我仍然认为ax.grid
似乎是一个更自然的解决方案。太好了!pcolor和ax、grid的颜色设置都很有用!这是一个很好的解决方案。通过使用自定义颜色贴图,我们可以更改网格线的颜色。