0

ベースマップとmatplotlibでwx guiを使用しています。2 つのパネル (左/右) があります。右側のパネルに米国の地図をプロットします。これは、以下のコードでは問題ありません。

# Setup the Map for Display
self.figure = Figure(None,dpi=75)
self.canvas = FigureCanvas(self.MapPage, -1, self.figure)
self.axes = self.figure.add_axes([0,0,1,1],frameon=False)
self.SetColor( (255,255,255) )  

#Sizer for Map Page Right Panel (Map Display)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.canvas, 1, wx.EXPAND | wx.ALL)
self.MapPage.SetSizer(sizer)

# Plot the Map
self.map = Basemap(llcrnrlon=-119, llcrnrlat=22, urcrnrlon=-64,
                   urcrnrlat=49, projection='lcc', lat_1=33, lat_2=45,
                   lon_0=-95, resolution='i', area_thresh=10000,ax=self.axes)
self.map.drawcoastlines()
self.map.drawcountries()
self.map.drawstates()

これは魅力のように機能します。ただし、最終的にはコードの後半で、地域のみを表示するようにマップを変更したいと考えています。ここで問題が発生します。現在、私はこれをやっています:

# Clear the previous figure
self.figure.clf()
self.figure.canvas.draw()

# Setup for the NEW Map to Display
self.figure = Figure(None,dpi=75)
self.canvas = FigureCanvas(self.MapPage, -1, self.figure)
self.axes = self.figure.add_axes([0,0,1,1],frameon=False)
self.SetColor( (255,255,255) )  

#Sizer for NEW Map Page Right Panel (Map Display)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.canvas, 1, wx.EXPAND | wx.ALL)
self.MapPage.SetSizer(sizer)

# Plot the NEW Map
self.map = Basemap(llcrnrlon=newlong1, llcrnrlat=newlat1, urcrnrlon=newlong2,
                   urcrnrlat=newlat2, projection='lcc', lat_0=maplat,
                   lon_0=maplon, resolution='i', area_thresh=10000,ax=self.axes)
self.map.drawcoastlines()
self.map.drawcountries()
self.map.drawstates()

このコードは、右側のパネルをクリアして新しいマップを表示することに成功しました。ただし、この新しいマップはパネルの左上隅にのみ表示されます。パネル全体に広がることはなくなりました。これがなぜなのかについてのアイデアはありますか?または、ベースマップ図をクリアして同じパネルに新しい図をプロットするより良い方法はありますか?

どんな助けでも大歓迎です!ありがとう!

4

0 に答える 0