我在飛機上有一組密集的點。我想讓它們着色,以便彼此靠近的點具有相同的顏色,而如果它們很遠,則使用不同的顏色。爲了簡單起見,假設有5種不同的顏色供選擇。原來我還沒有絲毫的想法如何做到這一點..着色關閉點
我使用的Tkinter與Python,順便
我在飛機上有一組密集的點。我想讓它們着色,以便彼此靠近的點具有相同的顏色,而如果它們很遠,則使用不同的顏色。爲了簡單起見,假設有5種不同的顏色供選擇。原來我還沒有絲毫的想法如何做到這一點..着色關閉點
我使用的Tkinter與Python,順便
如果您可以使用任何您想要的顏色,您可以使用顏色(幾乎)連續的事實。根據它們的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值。
如果你真的只需要使用少量的顏色,並有接近點有確切同色,那麼你就必須做你的數據有些clustering(K-means是一個簡單的和廣泛使用算法)。聚類後,您只需根據其集羣的ID爲每個點分配一個顏色。 Python有一些很好的實現,包括scipy's clustering。
是的。看起來,聚類的調整是最困難的部分。 – 2010-06-05 09:04:56
是的,這可能是最好的主意。我問了不同的顏色,因爲我認爲這會讓事情變得更簡單,但事實並非如此。我現在必須閱讀關於羣集。謝謝 :) – ooboo 2010-06-05 09:05:21
我會與識別在平面上的斑點的濃度開始。找到這些聚集的中心併爲它們分配每種獨特的顏色。然後對於其他點,您可以使用線性原理簡單地計算顏色。例如,如果一箇中心是紅色的,另一個是黃色的,則中間的某個點會變成橙色。
我可能會使用一些指數函數而不是線性原理。這將保持點組或多或少具有相同的顏色,只會給遠處的點帶來明顯的顏色變化,或者更準確地說,遠點和點之間的某處。
一種方法是通過你的觀點並將它們分成具有「中心」的集合。既然你有5種顏色,你會有5套。比較每個中心新點的距離,然後將其放在與最近點相同的組中。
每組對應於不同的顏色,因此您可以在完成此分區後對其進行繪製。
我喜歡這個想法 - 但我不知道如何選擇這些中心,以及如何確保每個集合具有或多或少相同的點數 – ooboo 2010-06-05 08:51:36
問題領域是一流的cluster analysis和Cluster suite with PyCluster是一個好的開始。
我有點困惑。你有積分嗎? 「親密」和「遠離」並不是離散的。接近的東西逐漸變得很遠。 – 2010-06-05 08:36:15
至少有一些有趣的問題,而不是系列「如何使用工具X」。 – 2010-06-05 08:40:19
你是對的,Noufal。我認爲完全用詞有點困難,但如果這些點均勻分佈在一個圓圈內,將它簡單地分成披薩片並賦予每片不同的顏色是有意義的。 – ooboo 2010-06-05 08:53:22