私はCartole example plotを南極の北極立体図に適用し、それにデータを追加しようとしています。私はいくつかの質問があります。Cartolormeshでのpcolormeshの問題
まず、サンプルコードでは、海の特徴の前に土地の特徴が追加されています。私がそれをしたとき、私は海だけの地図を得ました。私は以下のコードで呼び出しの順序を逆にし、陸と海の地図を取得します。 South Polarの例で他の注文が働いたのはなぜですか?
さらに重要なことに、私のpcolormesh呼び出しが何の効果もない理由を理解できません。
私はPython 2.7.7、matplotlib 1.5.1、Cartopy 0.15.1を使用しています。
import matplotlib.path as mpath
import matplotlib.pyplot as plt
import numpy as np
import cartopy.crs as ccrs
import cartopy.feature
lats = np.linspace(60,90,30)
lons = np.linspace(0,360,200)
X,Y = np.meshgrid(lons,lats)
Z = np.random.normal(size = X.shape)
def main():
fig = plt.figure(figsize=[10, 5])
ax = plt.subplot(1, 1, 1, projection=ccrs.NorthPolarStereo())
fig.subplots_adjust(bottom=0.05, top=0.95,
left=0.04, right=0.95, wspace=0.02)
# Limit the map to -60 degrees latitude and below.
ax.set_extent([-180, 180, 60, 60], ccrs.PlateCarree())
ax.gridlines()
ax.add_feature(cartopy.feature.OCEAN)
ax.add_feature(cartopy.feature.LAND)
# Compute a circle in axes coordinates, which we can use as a boundary
# for the map. We can pan/zoom as much as we like - the boundary will be
# permanently circular.
theta = np.linspace(0, 2*np.pi, 100)
center, radius = [0.5, 0.5], 0.5
verts = np.vstack([np.sin(theta), np.cos(theta)]).T
circle = mpath.Path(verts * radius + center)
ax.set_boundary(circle, transform=ax.transAxes)
ax.pcolormesh(X,Y,Z,transform=ccrs.PlateCarree())
plt.show()
if __name__ == '__main__':
main()
これは、おかげで問題だったように見えます。なぜ違う緯度/経度グリッドを使用することにしたのか、どうして0,1,2の代わりに1,3,4のレイヤーを選択したのか尋ねることはできますか? –
私はフィーチャのプロットの順序に焦点を当てます。私があなたのデータを 'pcolormesh()'プロットに使うと、すべての海洋(および目盛り)はpcolormesh層によって隠されます。 zorderの値については、プロットの順序を設定するために使用されるため、必要なものを生成することができます。値(1,3,4)は(0,1,2)で異なる出力を生成することができます。 ax.gridlines()はzorder = some_valueを持つこともできますが、あなたが推測できる値でプロットの上に表示することができます。より良いマップを得るためには、考慮すべき他の要素があります。 – swatchai