我正在尝试将等高线图叠加到海岸线的底图图上。现在,它要么单独绘制要么仅绘制底图。
Xa = np.linspace(-93.6683,-93.2683,25)
Ya = np.linspace(29.005,29.405,25)
plt.figure()
m = Basemap(width=1200000,height=900000,projection='lcc',resolution='f',lat_1=29.205,lat_2=29.5,lat_0=29.205,lon_0=-93,4683)
m.drawcoastlines()
plt.contourf(Ya,Xa,Result.reshape(len(Xa),len(Ya)))
plt.colorbar()
plt.show()
代码中的结果是绘制为轮廓的浓度。我会添加它们,但是从运行我的代码中有625个浓度值。 我想知道如何编写代码的绘图部分以便能够叠加两个图形。谢谢!
答案 0 :(得分:3)
您可能要在此处使用底图的轮廓函数。但是,这有一些特殊性。
它仅接受2D数组作为输入,这意味着您需要首先创建坐标的网格。
,并且输入必须是映射的坐标x,y = m(X,Y)
还要注意尺寸。 numpy数组的第一维是y轴,第二维是x轴。
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np
Xa = np.linspace(-93.6683,-93.2683,25)
Ya = np.linspace(29.005,29.405,25)
X,Y = np.meshgrid(Xa,Ya)
Result = np.random.rand(len(Ya)*len(Xa))
m = Basemap(width=1200000,height=900000,projection='lcc',resolution='c',
lat_1=29.205,lat_2=29.5,lat_0=29.205,lon_0=-93.4683)
m.drawcoastlines()
mx,my = m(X,Y)
m.contourf(mx,my,Result.reshape(len(Ya),len(Xa)))
plt.colorbar()
plt.show()