Я использую Cartopy для создания набора графиков на сетке широта / долгота (обновление с базовой карты Matplotlib), и даже несмотря на то, что при построении графиков не возникает никаких ошибок, мой код завершается неудачно, когда я пытаюсь сохранить рисунок в многостраничный файл PDF с использованием Matplotlib matplotlib.backends.backend_pdf.PdfPages
.
Вот соответствующая часть кода:
import cartopy
import cartopy.crs as ccrs
from matplotlib import colorbar, cm, pyplot
from matplotlib.backends.backend_pdf import PdfPages
from matplotlib.font_manager import FontProperties
(fig, axis) = pyplot.subplots(nrows=1, ncols=1, subplot_kw={"projection": ccrs.PlateCarree()})
fout = PdfPages("Junk.pdf")
fout.savefig(fig)
Я подтвердил, что fig
имеет тип matplotlib.figure.Figure
.
Я получаю ошибку:
File "./plot_cfba.py", line 326, in <module>
fout_tmp.savefig(fig[0])
File "/data/science_TC/kmueller/toolkit/python/3.6.9/lib/python3.6/site-packages/matplotlib/backends/backend_pdf.py", line 2445, in savefig
figure.savefig(self, format="pdf", **kwargs)
File "/data/science_TC/kmueller/toolkit/python/3.6.9/lib/python3.6/site-packages/matplotlib/figure.py", line 2180, in savefig
self.canvas.print_figure(fname, **kwargs)
File "/data/science_TC/kmueller/toolkit/python/3.6.9/lib/python3.6/site-packages/matplotlib/backend_bases.py", line 2089, in print_figure
**kwargs)
File "/data/science_TC/kmueller/toolkit/python/3.6.9/lib/python3.6/site-packages/matplotlib/backends/backend_pdf.py", line 2503, in print_pdf
self.figure.draw(renderer)
File "/data/science_TC/kmueller/toolkit/python/3.6.9/lib/python3.6/site-packages/matplotlib/artist.py", line 38, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/data/science_TC/kmueller/toolkit/python/3.6.9/lib/python3.6/site-packages/matplotlib/figure.py", line 1709, in draw
renderer, self, artists, self.suppressComposite)
File "/data/science_TC/kmueller/toolkit/python/3.6.9/lib/python3.6/site-packages/matplotlib/image.py", line 135, in _draw_list_compositing_images
a.draw(renderer)
File "/data/science_TC/kmueller/toolkit/python/3.6.9/lib/python3.6/site-packages/matplotlib/artist.py", line 38, in draw_wrapper
return draw(artist, renderer, *args, **kwargs)
File "/data/science_TC/kmueller/miniconda3/lib/python3.6/site-packages/cartopy/mpl/geoaxes.py", line 372, in draw
gl._draw_gridliner(background_patch=self.background_patch)
File "/data/science_TC/kmueller/miniconda3/lib/python3.6/site-packages/cartopy/mpl/gridliner.py", line 338, in _draw_gridliner
x_lc = mcollections.LineCollection(lines, **collection_kwargs)
File "/data/science_TC/kmueller/toolkit/python/3.6.9/lib/python3.6/site-packages/matplotlib/collections.py", line 1331, in __init__
**kwargs)
File "/data/science_TC/kmueller/toolkit/python/3.6.9/lib/python3.6/site-packages/matplotlib/collections.py", line 162, in __init__
self.update(kwargs)
File "/data/science_TC/kmueller/toolkit/python/3.6.9/lib/python3.6/site-packages/matplotlib/artist.py", line 974, in update
ret = [_update_property(self, k, v) for k, v in props.items()]
File "/data/science_TC/kmueller/toolkit/python/3.6.9/lib/python3.6/site-packages/matplotlib/artist.py", line 974, in <listcomp>
ret = [_update_property(self, k, v) for k, v in props.items()]
File "/data/science_TC/kmueller/toolkit/python/3.6.9/lib/python3.6/site-packages/matplotlib/artist.py", line 970, in _update_property
.format(type(self).__name__, k))
AttributeError: 'LineCollection' object has no property 'xloc'
Я использую Matplotlib версии 3.1.2, Cartopy 0.17.0 и python 3.6.9.
Есть ли несоответствие между этими версиями Matplotlib и Cartopy? Нужно ли обновлять один из них, чтобы он соответствовал другому?
Этот код работал нормально, но теперь, когда я делаю свои карты, используя Cartopy, все сломалось.