2012-08-31 125 views
2

我使用matplotlib和底圖(在wxpython gui中)繪製事物。目前,我的劇情代碼看起來像這樣:python和matplotlib並更改標記顏色

self.map = Basemap(llcrnrlon=lon_L, llcrnrlat=lat_D, urcrnrlon=lon_R, 
           urcrnrlat=lat_U, projection='lcc', lat_0=map_lat1, lon_0=map_lon1, 
           resolution='i', area_thresh=10000,ax=self.axes, fix_aspect=False) 

m = Basemap(llcrnrlon=lon_L, llcrnrlat=lat_D, urcrnrlon=lon_R, 
         urcrnrlat=lat_U, projection='lcc', lat_0=map_lat1, lon_0=map_lon1, 
         resolution='i', area_thresh=10000,ax=self.axes) 

x,y=m(some_x_data,some_y_data) 
plot_handle, = self.map.plot(x,y,'bo') 
plot_handle.set_xdata(x) 
plot_handle.set_ydata(y) 

self.figure.canvas.draw() 

這就說明它很好。現在我想要做的是採取一個單一的點(我的數據中的單個x和單個y)併爲它着色爲不同的顏色。我仍然想使用plot_handle,因爲我不斷地更新地圖/繪圖 - 所以我不想重置我的數據。任何幫助?

謝謝!

回答

1

做一個新的plot_handle用不同的標記的具體情節:

plot_handle1, = self.map.plot([x[i]], [y[i]], 'ro') 

你那麼有這個你想改變這一點的位置,每一次更新。無法僅使用一個plot_handle,並且使用不同標記顯示點。

1

如果您使用scatterdoc),您可以設置和更新每個點的顏色。

import matplotlib.pylab as plt 
x,y = m(some_x,some_y) 
c = iterator_of_colors 
plt_handle, = self.map.scatter(x,y,c=c) 
# some code 
c[j] = new_color # update you color list 
plt_handle.set_array(c) # update the colors in the graph 
plt.draw() 

它看起來有點怪使用set_array但畢竟是如何matplotlib涉及內部散點圖(它看起來像他們使用的是用於顯示而不是正方形的圖片,纔剛剛顏色標記同一類網格)。