Базовая карта и Matplotlib - улучшение скорости
Я создаю инструмент для геопространственной визуализации экономических данных с использованиемMatplotlib
а такжеBasemap
.
Тем не менее, прямо сейчас, единственный способ, которым я думал об этом, дает мне достаточно гибкости - это создавать новую базовую карту каждый раз, когда я хочу изменить данные.
Вот соответствующие части кода, который я использую:
<code>class WorldMapCanvas(FigureCanvas): def __init__(self,data,country_data): self.text_objects = {} self.figure = Figure() self.canvas = FigureCanvas(self.figure) self.axes = self.figure.add_subplot(111) self.data = data self.country_data = country_data #this draws the graph super(WorldMapCanvas, self).__init__(Figure()) self.map = Basemap(projection='robin',lon_0=0,resolution='c', ax=self.axes) self.country_info = self.map.readshapefile( 'shapefiles/world_country_admin_boundary_shapefile_with_fips_codes', 'world', drawbounds=True,linewidth=.3) self.map.drawmapboundary(fill_color = '#85A6D9') self.map.fillcontinents(color='white',lake_color='#85A6D9') self.map.drawcoastlines(color='#6D5F47', linewidth=.3) self.map.drawcountries(color='#6D5F47', linewidth=.3) self.countrynames = [] for shapedict in self.map.world_info: self.countrynames.append(shapedict['CNTRY_NAME']) min_key = min(data, key=data.get) max_key = max(data, key=data.get) minv = data[min_key] maxv = data[max_key] for key in self.data.keys(): self.ColorCountry(key,self.GetCountryColor(data[key],minv,maxv)) self.canvas.draw() </code>
Как я могу создавать эти графики быстрее?
Я не мог придумать решение, позволяющее избежать создания карты каждый раз, когда я запускаю свой код. Я пытался создать холст / рисунок вне класса, но это не имело большого значения. Самый медленный вызов - тот, который создает Базовую карту и загружает данные формы. Все остальное работает довольно быстро.
Кроме того, я попытался сохранить базовую карту для будущего использования, но, поскольку мне нужны новые оси, я не смог заставить ее работать. Может быть, вы можете указать мне правильное направление, как это сделать.
Мне бы хотелось, чтобы вы знали, что я использую холст в качестве PySide QWidget и что я строю различные типы карт в зависимости от данных, это только одна из них (другой может быть, например, карта Европы). или США).