着色点

时间:2010-06-05 08:31:21

标签: python geometry tkinter

我在飞机上有一组密集的点。我希望它们是彩色的,以便彼此接近的点具有相同的颜色,如果它们很远,则需要不同的颜色。为简单起见,假设有5种不同的颜色可供选择。事实证明我没有丝毫想法如何做到这一点..

顺便说一下,我正在使用Tkinter和Python

4 个答案:

答案 0 :(得分: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,对于具有最大x值的点给出1。

如果你真的只需要使用少量颜色并且关闭点具有完全相同的颜色,那么你将不得不做一些{{3你的数据(clustering是一个简单而广泛使用的算法)。在群集之后,您只需根据群集的ID为每个点指定一种颜色。 Python有一些很好的实现,包括K-means

答案 1 :(得分:0)

我首先要确定飞机上斑点的浓度。找到这些聚集的中心,并为它们分配每种独特的颜色。然后对于其他斑点,您可以使用线性原理简单地计算颜色。例如,如果一个中心是红色而另一个中心是黄色,则中间某处的点将变为橙色。

我可能会使用一些指数函数而不是线性原理。这将使得点组或多或少保持相同的颜色,只会给远处的点带来明显的颜色变化,或者更确切地说,是远处和点之间的某处。

答案 2 :(得分:0)

一种方法是通过你的点并将它们分成具有“中心”的集合。由于你有5种颜色,你将有5套。您比较新点与每个中心的距离,然后将其与最接近的中心放在同一组中。

每个集合对应不同的颜色,因此您可以在完成此分区后绘制它。

答案 3 :(得分:0)

问题域是经过良好考验的cluster analysis,而Cluster suite with PyCluster是一个良好的开端。