Python和Matplotlib:更改标记颜色

3

我正在使用matplotlib和Basemap(在wxpython界面中)绘制图形。目前,我的绘图代码看起来像这样:

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,因为我经常更新地图/图表 - 所以我不想重置我的数据。有什么帮助吗?
谢谢!
2个回答

2
如果您使用 scatter (文档),您可以设置并更新每个点的颜色。
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

为特定的图绘制一个新的plot_handle,并使用不同的标记:

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

然后,每次想要更改该点的位置时,您都必须更新此内容。不可能仅使用一个plot_handle并显示具有不同标记的点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接