我试图绘制一些作为矩阵存在的数据,例如温度。这些数据是区域性的,因此我不需要全球地图。
我有:
我想用墨卡托投影的纸币绘制它。但是,mercator只允许我定义最小和最大lat,而不是min和max lon。这最终给了我一片宽阔的土地。
C = pi;
A = pi;
B = pi;
Z = [cos(C),-sin(C),0; sin(C),cos(C),0; 0,0,1];
X = [1,0,0;0,cos(A),-sin(A);0,sin(A),cos(A)];
Y = [cos(B),0,sin(B);0,1,0;-sin(B),0,cos(B)];
R =(X*Y)*Z;
yaw=atan2(R(2,1),R(1,1))
pitch=atan2(-R(3,1),sqrt(R(3,2)^2+R(3,3)^2))
roll=atan2(R(3,2),R(3,3))
我如何设置沿海地图的最小和最大经度? 最后,我只想绘制我的数据,覆盖在国家边界上,就像使用ncview一样。
答案 0 :(得分:2)
您通常不会在选择投影时设置地图的范围,您可以稍后使用您创建的轴的set_extent
方法进行设置。实际上,cartopy中的默认行为是使范围适合绘制的数据,因此您应该使用正常墨卡托投影创建绘图时发生的情况。以下是在地理坐标中明确设置范围的示例:
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
# Create Mercator projection with dateline in the middle:
ax = plt.axes(projection=ccrs.Mercator(central_longitude=180))
# Draw coastlines so we know where we are:
ax.coastlines()
# Set the map extent, making sure to specify the correct coordinate system
# for geographical coordinates:
ax.set_extent([90, 270, -40, 40], crs=ccrs.PlateCarree())
plt.show()