2010-06-05 5 views
4

나는 평면에 점들의 빽빽한 세트가있다. 서로 가깝게있는 점들이 같은 색을 가지도록하고, 멀리있는 경우 다른 색을 사용하도록 색칠하고 싶습니다. 단순함을 위해, 말하자면 선택할 수있는 5 가지 색상이 있다고 가정합니다. 내가색칠 가까운 지점

+0

조금 혼란 스럽습니다. 포인트 덩어리가 있습니까? "친밀감"과 "원근감"은 별개의 것이 아닙니다. 가까이에있는 것들은 서서히 멀어집니다. –

+0

"도구 X를 사용하는 방법"시리즈의 흥미로운 질문은 적어도 있습니다. –

+0

당신이 옳습니다, Noufal. 필자는 정확히 구가 어렵다는 생각이 든다. 그러나 포인트가 원 안에 똑같이 분포되어 있다면 피자 슬라이스로 나누고 각 슬라이스에 다른 색을 부여하는 것이 합리적 일 것이다. – ooboo

답변

2

원하는 색상을 사용할 수 있다면 색상이 거의 연속적이라는 사실을 사용할 수 있습니다. x, y 좌표에 따라 점의 색을 지정하십시오. 따라서 가까운 점은 과 다소 비슷합니다.이되는 부작용이 있습니다. 최대로 포인트

는 최소한의 x 값을 가진 점에 대해 0을 줄 것이다, 그래서 당신은 normalized_x이

point.color(R,G,B) = (point.normalized_x, 0.5, 1-point.normalized.y) 

(X-MIN_X/(max_x-MIN_X)) 같은 것을 사용할 수 있으며, 1 x 값.

당신이 정말로 색상의 작은 번호를 사용하고 가까운 지점이해야하는 경우

정확한 같은 색을 가지고, 당신은 어떤 데이터에 clustering ( K-means 간단하고 널리 사용되는을해야 할 것이다 연산). 클러스터링 한 후에는 클러스터의 ID에 따라 각 포인트에 색상을 지정하면됩니다. 파이썬에는 scipy's clustering을 포함하여 좋은 구현이 있습니다.

+0

클러스터링 튜닝이 가장 어려운 부분 인 것 같습니다. –

+0

그래, 그게 제일 좋은 생각이야. 나는 물건을 더 단순하게 만들 것이라고 생각했기 때문에 뚜렷한 색을 물었지만 그렇게 밝혀지지 않았다. 이제 클러스터링에 대해 읽어야합니다. 감사 :) – ooboo

0

내가 평면에서 지점의 농도를 식별하는 시작 했죠 그런데, 나는 파이썬 Tkinter를 사용하고 그 작업을 수행하는 방법에 대해 조금이라도 생각 ..

하지했습니다 밝혀졌습니다. 그 덩어리의 중심을 찾아 각각의 고유 한 색을 지정하십시오. 그런 다음 다른 지점의 경우 선형 원리를 사용하여 색상을 간단히 계산할 수 있습니다. 예를 들어 하나의 중심이 빨간색이고 다른 하나가 노란색 인 경우 중간에있는 점이 주황색이됩니다.

아마 선형 원리 대신 몇 가지 지수 함수를 사용할 것입니다. 이렇게하면 포인트 그룹을 동일한 색상으로 유지할 수 있습니다. 멀리 떨어진 지점이나 눈에 띄지 않는 색상 변경이있을 수 있습니다.

0

한 가지 방법은 포인트를 거쳐 "센터"가있는 세트로 분할하는 것입니다. 색깔이 5 가지이므로 5 세트가 있습니다. 각 센터에서 새 지점까지의 거리를 비교 한 다음 가장 가까운 지점과 같은 그룹에 놓습니다.

각 세트는 다른 색상에 해당하므로이 파티셔닝이 완료된 후에도 그려 볼 수 있습니다.

+0

나는이 아이디어가 마음에 들지만 - 그 센터를 선택하는 방법과 각 세트의 포인트 수를 같게 만드는 방법이 확실하지 않다. – ooboo