Заполнение многоугольника на базовой карте с помощью функции get_axis_bgcolor устарело в версии 2.0.

avatar
Ethan Huang
8 апреля 2018 в 01:04
165
0
0

Я пытаюсь заполнить полигон цветом в базовой карте. Но я всегда получал ошибку get_axis_bgcolor function was deprecated in version 2.0 и цвет не отображался. Я использовал pip install basemap и conda install -c conda-forge basemap для переустановки basemap, как указано в здесь в python3.6. Шейп-файл можно найти здесь. А исходные шейп-файлы предоставлены здесь.

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
from matplotlib.patches import Polygon
import shapefile
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111)

m = Basemap(projection = 'mill', llcrnrlat=40.47,urcrnrlat=40.95,\
        llcrnrlon=-74.28,urcrnrlon=-73.70,resolution='f') # mill = Miller cylindrical cordinates, resolution c or f
m.drawcoastlines()
# m.drawcounties()
m.drawrivers()
m.fillcontinents(color='w', lake_color = 'lightslategrey')
m.drawmapboundary()
m.readshapefile('~/Desktop/Capstone2017/taxi_zones/taxi_zones_WGS84','taxi_zones_WGS84')

sf=shapefile.Reader('~/Desktop/Capstone2017/taxi_zones/taxi_zones_WGS84')

shape_ex = sf.shape(13)
x_lon = np.zeros((len(shape_ex.points)))
y_lat = np.zeros((len(shape_ex.points)))
for ip in range(len(shape_ex.points)):
    x_lon[ip] = shape_ex.points[ip][0]
    y_lat[ip] = shape_ex.points[ip][1]

region = np.dstack((x_lon, y_lat))[0]
poly = Polygon(region, facecolor='r', edgecolor='k')
ax.add_patch(poly)

Полная трассировка сообщения об ошибке:

/Users/miniconda3/lib/python3.6/site-packages/mpl_toolkits/basemap/__init__.py:1707: MatplotlibDeprecationWarning: The get_axis_bgcolor function was deprecated in version 2.0. Use get_facecolor instead.
  if self.projection not in ['geos','ortho','nsper']:
/Users/miniconda3/lib/python3.6/site-packages/mpl_toolkits/basemap/__init__.py:1563: MatplotlibDeprecationWarning: The get_axis_bgcolor function was deprecated in version 2.0. Use get_facecolor instead.
  x = len(yy)*[self.xmin]; y = yy.tolist()

Мой результат выглядит следующим образом:

enter image description here

Источник
Thomas Kühn
8 апреля 2018 в 05:13
0

Почему вы читаете шейп-файл дважды? Не могли бы вы каким-то образом сделать свой шейп-файл доступным, чтобы ваш код можно было запускать?

Ethan Huang
8 апреля 2018 в 05:47
0

Первое чтение заключалось в том, чтобы нанести все фигуры на карту, а второе — попытаться раскрасить одну из них. Есть ли лучший способ приблизиться к нему?

Ответы (0)