私は今後の操作のために散布図の点を選択できる対話グラフを作成しています。位置を別の点と交換する。ポイントが選択されると、ポイントが選択されたことを示すために黒に変わります。散布図からのラベルとそのポイントオブジェクトの作成
あり、図中のいくつかの散布図も、各プロットは、各点の元の色を保持するので、独特の色を持っていることが、私はラベル(キー)とそのポイントオブジェクトの辞書を作成する必要があります(値)。ペアリング中に他の値が元の色、XY位置など
を含んここで、単一の散布図だし、イベント関数を選んだ:
self.scatter = self.mplwidget_layout.canvas.ax.scatter(
y=...,
x=...,
color=...,
edgecolors=...,
picker=True
)
self.mplwidget_layout.canvas.mpl_connect('pick_event', self.select_point)
def select_point(self, event):
if event.mouseevent.button == 1:
facecolor = self.scatter._facecolors[event.ind,:]
if (facecolor == np.array([[0, 0, 0, 1]])).all():
# Look up label-object dict
else:
self.scatter._facecolors[event.ind,:] = (0, 0, 0, 1)
self.scatter._edgecolors[event.ind,:] = (1, 1, 1, 1)
self.mplwidget_layout.canvas.draw()
私は個々のラベルを(割り当てることができないように思え配列内の点)をポイントにマッピングできますが、ラベルにオフセットをマップできます。各ポイントに名前を付けて名前で検索する方法はありますか?
散布図のポイントオブジェクトのリストにアクセスするにはどうすればよいですか?
ポイントとその割り当てられた名前:
'scatter'は' paths'という名前の属性として 'PathCollection'を返します。これはあなたのポイントに関する情報を含む必要があります。棒グラフの 'Rect'のように機能するなら、' dict'を使ってマッピングを行うことができますが、それはテストする必要があります... –
@ThomasKühn 'paths'属性は存在しないようですユニーク。以下の答えで提供されているサンプルコードを試してみてください。 'print(event.artist._paths)'を使ってチェックしました。私はそれが1つの散布図があるので、これはクリックされた散布図を検出するのに役立つかもしれないからだと思います。 – FatHippo
'_paths'は一意ですが、(get_paths()で取得する方が良い方法で)確認しました。しかし、私があなたの問題を正しく解釈するならば、あなたは同じ座標を使って各サブプロットの点をプロットします。この場合、 '_paths'オブジェクトはそれぞれ* equal *ですが、** *同じではありません(' == 'と' is'の違い)。 –