5

高さと幅を指定して (地理) 軸のセットを定義した場合、プロットがこれらの軸を埋めるようにするにはどうすればよいですか?

import matplotlib.pyplot as plt
import cartopy.crs as ccrs

ax = plt.axes([0.3, 0.1, 0.4, 0.8], projection=ccrs.PlateCarree())
ax.coastlines()
ax.set_global()
plt.show()

これにより、マップの適切な縦横比を持つプロットが生成されますが、代わりに軸を埋めるためにプロットが幅よりも高くなっています。これは単なる例ですが、これを行うことが重要な現実のシナリオがあります。

編集

念のために言うと、実際には結果を歪ませたいので、この例では、幅よりも高さが大きいグローバルな範囲を持つマップが本当に必要です。の使用はとの射影でax.set_aspect('auto')機能するように見えますが、おそらくすべてで機能するとは限りません (たとえば)。PlateCarreeNorthPolarStereographicOSGB

4

1 に答える 1

9

良い質問。私はこれをかなりの数ヶ月間レーダーに当てていました(https://github.com/SciTools/cartopy/issues/9)。

私は最近、matplotlib のax.set_adjustableメソッドについて学びました (ここでは実際)。これを使用すると、固定 (データ) 縦横比を持つ軸に、データ制限を変更することで可能なスペースを埋めるように指示できます。

例えば:

import matplotlib.pyplot as plt


ax = plt.axes([0.25, 0.05, 0.5, 0.9])
ax.set_aspect(1)

ax.plot(range(10))
ax.set_adjustable('datalim')

plt.show()

非正方形のプロットを生成します (x と y 次元の長さが等しい)。

これはカートピー マップにも適用できるように思えます。

import matplotlib.pyplot as plt
import cartopy.crs as ccrs


ax = plt.axes([0.25, 0.05, 0.5, 0.9], projection=ccrs.PlateCarree())
ax.coastlines()
ax.set_adjustable('datalim')

ax.set_ylim([-90, 90])

plt.show()

ここであなたのニーズに合っているかどうか疑問に思いますか?

于 2013-03-18T17:07:53.460 に答える