2010-06-05 99 views
4

我在飛機上有一組密集的點。我想讓它們着色,以便彼此靠近的點具有相同的顏色,而如果它們很遠,則使用不同的顏色。爲了簡單起見,假設有5種不同的顏色供選擇。原來我還沒有絲毫的想法如何做到這一點..着色關閉點

我使用的Tkinter與Python,順便

+0

我有點困惑。你有積分嗎? 「親密」和「遠離」並不是離散的。接近的東西逐漸變得很遠。 – 2010-06-05 08:36:15

+0

至少有一些有趣的問題,而不是系列「如何使用工具X」。 – 2010-06-05 08:40:19

+0

你是對的,Noufal。我認爲完全用詞有點困難,但如果這些點均勻分佈在一個圓圈內,將它簡單地分成披薩片並賦予每片不同的顏色是有意義的。 – ooboo 2010-06-05 08:53:22

回答

2

如果您可以使用任何您想要的顏色,您可以使用顏色(幾乎)連續的事實。根據它們的x,y座標對點進行着色,因此您將得到一個副作用,即接近點將具有有點類似顏色

您可以使用類似

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

其中normalized_x爲(x-MIN_X /(MAX_X-MIN_X)),所以它會以最小的x值點給出0和1與最大點x值。

如果你真的只需要使用少量的顏色,並有接近點有確切同色,那麼你就必須做你的數據有些clusteringK-means是一個簡單的和廣泛使用算法)。聚類後​​,您只需根據其集羣的ID爲每個點分配一個顏色。 Python有一些很好的實現,包括scipy's clustering

+0

是的。看起來,聚類的調整是最困難的部分。 – 2010-06-05 09:04:56

+0

是的,這可能是最好的主意。我問了不同的顏色,因爲我認爲這會讓事情變得更簡單,但事實並非如此。我現在必須閱讀關於羣集。謝謝 :) – ooboo 2010-06-05 09:05:21

0

我會與識別在平面上的斑點的濃度開始。找到這些聚集的中心併爲它們分配每種獨特的顏色。然後對於其他點,您可以使用線性原理簡單地計算顏色。例如,如果一箇中心是紅色的,另一個是黃色的,則中間的某個點會變成橙色。

我可能會使用一些指數函數而不是線性原理。這將保持點組或多或少具有相同的顏色,只會給遠處的點帶來明顯的顏色變化,或者更準確地說,遠點和點之間的某處。

0

一種方法是通過你的觀點並將它們分成具有「中心」的集合。既然你有5種顏色,你會有5套。比較每個中心新點的距離,然後將其放在與最近點相同的組中。

每組對應於不同的顏色,因此您可以在完成此分區後對其進行繪製。

+0

我喜歡這個想法 - 但我不知道如何選擇這些中心,以及如何確保每個集合具有或多或少相同的點數 – ooboo 2010-06-05 08:51:36