3

我正在使用 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 因为我不断更新地图/绘图——所以我不想只是重置我的数据。有什么帮助吗?

谢谢!

4

2 回答 2

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内部处理散点图的方式(看起来它们使用用于显示图像的相同类,只是标记中的颜色而不是网格中的正方形)。

于 2012-09-01T04:52:56.590 回答
1

使用不同的标记为特定绘图执行新的 plot_handle:

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

然后,每次要更改该点的位置时,都必须更新它。不可能只使用一个 plot_handle 并用不同的标记显示点。

于 2012-08-31T21:22:39.880 回答