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')

そのポイントの位置を変更するたびに、これを更新する必要があります。1 つの plot_handle のみを使用して、異なるマーカーでポイントを表示することはできません。

于 2012-08-31T21:22:39.880 に答える