Мне нужно знать, как обновить оси графика после создания. Я видел в документации matplotlib здесь .
Я пробовал следующий код:
ax.update(ax.properties())
, но я получаю следующую ошибку:
Traceback (most recent call last):
File "<ipython-input-127-e6624b1841f4>", line 1, in <module>
ax.update(ax.properties())
File "C:\Users\cjmar\Anaconda3\lib\site-packages\matplotlib\artist.py", line 974, in update
ret = [_update_property(self, k, v) for k, v in props.items()]
File "C:\Users\cjmar\Anaconda3\lib\site-packages\matplotlib\artist.py", line 974, in <listcomp>
ret = [_update_property(self, k, v) for k, v in props.items()]
File "C:\Users\cjmar\Anaconda3\lib\site-packages\matplotlib\artist.py", line 970, in _update_property
.format(type(self).__name__, k))
AttributeError: 'GeoAxesSubplot' object has no property 'children'
, но, изучая ax.properties()
, действительно есть 'children' ключ там. Не уверен что происходит. Я знаю, что cartopy, похоже, переопределяет класс GeoAxes
, однако, похоже, что нет ничего перегруженного в отношении метода update.
Некоторые примеры кода. Лучше всего запускать это в консоли i Python, чтобы вы могли получить доступ к объекту ax
, пока график все еще отображается. Может потребоваться plt.show()
внизу. Я использую Spyder, который не требует этого.
import os
import sys
import matplotlib.pyplot as plt
import matplotlib
import mpl_toolkits
import numpy as np
import cartopy
import cartopy.crs as ccrs
fig = plt.figure()
ax = plt.axes(projection=ccrs.NorthPolarStereo())
ax.stock_img()
ny_lon, ny_lat = -75, 43
delhi_lon, delhi_lat = 77.23, 28.61
plt.plot([ny_lon, delhi_lon], [ny_lat, delhi_lat],
color='blue', linewidth=2, marker='o',
transform=ccrs.Geodetic(),
)
plt.plot([ny_lon, delhi_lon], [ny_lat, delhi_lat],
color='gray', linestyle='--',
transform=ccrs.PlateCarree(),
)
ax.add_patch(matplotlib.patches.Polygon([[0,0],[20,0],[20,20],[0,20]],
fill = False,color='g',ls='--',
transform=ccrs.PlateCarree()))
ax.add_patch(matplotlib.patches.Circle([30,30],radius=10,color='g',ls='--',
transform=ccrs.PlateCarree()))
plt.text(ny_lon - 3, ny_lat - 12, 'New York',
horizontalalignment='right',
transform=ccrs.Geodetic())
plt.text(delhi_lon + 3, delhi_lat - 12, 'Delhi',
horizontalalignment='left',
transform=ccrs.Geodetic())
# ax.set_extent([-180,180,-90,90])
ax.set_global()
Как правильно использовать этот метод?
РЕДАКТИРОВАТЬ: Этот вопрос находится в прямой связи с другим вопросом, заданным мной. здесь
Но вопросы действительно разные, так как этот вопрос спрашивает, как использовать метод, и этот вопрос спрашивает, как обновить проекцию осей.