2013-05-04 3 views
1

나는 750 점이있는 matplotlib를 사용하여 생성 한 2D 점 플롯을 사용합니다. mpldatacursor를 사용하여 포인트 위로 마우스를 가져 가면 데이터 포인트 (즉, numpy 배열의 행/위치 등)에 대한 라벨을 결정할 수있었습니다.numpy 배열의 행/위치 찾기 : 2D 점 플롯에서 마우스를 사용하여

mpldatacursor를 사용할 때 제대로 작동하지만 x는 &입니다. 관심있는 개별 지점의 라벨/원산지를 어떻게 찾을 수 있습니까? 나는 레이블을 음모 할 수 있다는 것을 알고 있습니다. 그러나 750 개의 데이터 포인트를 사용하면 꽤 지저분합니다.

생각, Sarr.

+0

어떤 점이든, 단지 포인트의 인덱스를 표시하고 싶다면'datacursor (formatter = {ind} .format)'을 사용하면됩니다. 요소가 하나라도있는 경우에도 항상 목록이 표시됩니다. 좀 더 멋지게 보이기를 원하면'datacursor (formatter = lambda ** kwargs : ','.join (kwargs [ 'ind']))'와 같은 것을하십시오. –

답변

2

플롯 된 점을 선택하여 정보를 데이터 좌표로 다시 전달할 수 있습니다. 이를 달성하는 방법에 대한 자세한 내용은 matplotlib의 event handling and picking 가이드를 확인하십시오. 당신은 데이터의 좌표가 있으면

, 당신은 NumPy와 사용 해당 인덱스를 찾을 수 있습니다

import numpy as np 

# arr is the array you plot 

[...code to plot/pick array...] 

# datapt are the data coordinates you get back from the picking event 

indices = np.argwhere(arr == datapt) 

이 방법 mpldatacursor보다 훨씬 더 많은 작업을 포함하지만, 후자는 거의만큼 유연성을 제공하지 않는 것 .

관련 문제