我正在使用matplotlib和Basemap(在wxpython gui中)绘制内容。目前,我的情节代码看起来像这样:
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因为我不断更新地图/情节 - 所以我不想只重置我的数据。有帮助吗?
谢谢!
答案 0 :(得分:2)
如果您使用scatter
(doc),则可以设置和更新每个点的颜色。
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
内部处理散点图的方式(看起来它们使用的是用于显示图像的相同类,只是标记中的颜色而不是网格中的方块。)
答案 1 :(得分:1)
使用不同的标记为特定绘图执行新的plot_handle:
plot_handle1, = self.map.plot([x[i]], [y[i]], 'ro')
每次想要更改该点的位置时,您都必须更新它。不可能只使用一个plot_handle并且使用不同的标记显示点。