Bir alt örnek örneği (matplotlib.axes._subplots.AxesSubplot
) alan ve projeksiyonunu başka bir projeksiyona, örneğin cartopy.crs.CRS
projeksiyonlarından birine dönüştüren basit bir işlev oluşturmaya çalışıyorum.Matplotlib'in varolan bir eksenin alt alan projeksiyonunu nasıl değiştiririm?
fikri Tabii bu
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)
gibi bir şey, sadece fig.add_subplot()
işlevini kullanabilirsiniz görünür:
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()
ama subplot eksenini değiştirmek için uygun bir matplotlib
yöntem olup olmadığını merak'dan sonra projeksiyon tanımlanmıştır. Matplotlib API okuma maalesef yardımcı olmadı.
Teşekkürler! Ve sadece onaylamak için, 'projection' anahtar sözcüğü, tüm subplots için bir kerede sınıf belirler, bu yüzden' subplot_kw' içinde birkaç projeksiyon geçmek için bir yolu yoktur? E.g. 'plt.subplots (ncols = 2)' tarafından oluşturulan bir alt-küme kümesinin ikinci sütunu için projeksiyon = 'polar' 've ilk sütun ve' projection = ccrs.PlateCarree() '? –
'subplot_kw''deki anahtar kelimeler her bir eksene aktarılır, bu yüzden açıkladığınız şeyi yapabileceğinizi düşünmüyorum. 'Subplots' işlevi, temel kullanım durumunu karşılamak için bir kolaylık sağlayan bir sarıcıdır, eğer daha fazla bir şeye ihtiyacınız varsa,' add_subplot' veya benzeri kullanılarak kendi sarmalayıcı fonksiyonunuzu yazabilirsiniz. – ajdawson
ImageGrid ile bunu yapmanın bir yolu var mı? ImageGrid'in izin verdiği harita aralığı ve colorbar yerleşimi üzerinde denetim sahibi olmak güzel olurdu, ancak kılavuzdaki alt piksellerin projeksiyonunu ayarlamanın bir yolunu görmüyorum. –