私はサブプロットインスタンス(matplotlib.axes._subplots.AxesSubplot
)をとり、投影を別の投影(例えば、cartopy.crs.CRS
投影のいずれか)に変換する単純な関数を作成しようとしています。既存の軸のmatplotlibのサブプロット投影を変更するにはどうすればよいですか?
アイデアはもちろん、この
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
def make_ax_map(ax, projection=ccrs.PlateCarree()):
# set ax projection to the specified projection
...
# other fancy formatting
ax2.coastlines()
...
# Create a grid of plots
fig, (ax1, ax2) = plt.subplots(ncols=2)
# the first subplot remains unchanged
ax1.plot(np.random.rand(10))
# the second one gets another projection
make_ax_map(ax2)
のようなものが、私はちょうどfig.add_subplot()
機能を使用することができますになります。
fig = plt.figure(figsize=(10,5))
ax1 = fig.add_subplot(121)
ax1.plot(np.random.rand(10))
ax2 = fig.add_subplot(122,projection=ccrs.PlateCarree())
ax2.coastlines()
が、サブプロットの軸を変更するための適切なmatplotlib
方法があれば、私は思っていましたの後に投影が定義されました。 matplotlib APIを読むことは、残念なことに役立たなかった。
ありがとうございます!そして確認するために、 'projection'キーワードはすべてのサブプロットのクラスを一度に決定するので、' subplot_kw'にいくつかのプロジェクションを渡す方法はありません。 など。 'plt.subplots(ncols = 2)'によって作成されたサブプロットセットの第2列の 'projection = ccrs.PlateCarree()'を最初の列に 'projection = 'polar''ですか? –
'subplot_kw'のキーワードが各軸に渡されるので、あなたが何を記述することはできないと思います。 'subplots'関数は基本的なユースケースに対応するための便利なラッパーです。もしあなたが' add_subplot'などを使って独自のラッパー関数を書くことができればもっと必要なものがあれば。 – ajdawson
ImageGridでこれを行う方法はありますか? ImageGridで可能な地図の間隔やカラーバーの配置を制御できるのはうれしいことですが、グリッド内のサブプロットの投影を設定する方法はありません。 –