以特定顺序连接散点图点matplotlib

时间:2015-10-25 22:01:43

标签: python matplotlib

我想使用matplotlib绘制元组列表的散点图,其元素是x和y坐标。它们的连通性由另一个列表确定,该列表表明哪个点连接到哪个点。到目前为止我所拥有的是:

import itertools
import matplotlib.pyplot as plt

coords = [(0.0, 0.0), (1.0, 1.0), (1.0, 0.0), (2.0, 1.0), (2.0, 0.0), (3.0, 1.0)]
connectivity = coords[0] <--> coords[1], coords[2]
               coords[1] <--> coords[0], coords[2], coords[3]
               coords[2] <--> coords[0], coords[1], coords[4]
               coords[3] <--> coords[1], coords[3], coords[5]
               coords[4] <--> coords[2], coords[3], coords[5]
               coords[5] <--> coords[3], coords[4]
x, y = zip(*coords)
plt.plot(x, y, '-o')
plt.show()

我知道连接部分不是实际的python脚本。我把它包含在内,向大家展示了这些点应该如何连接。运行此脚本(没有连接位)时,我得到下面的图表:

enter image description here

但是,我希望情节显示为:

enter image description here

我有什么想法可以做到这一点吗?

1 个答案:

答案 0 :(得分:3)

只需分别绘制每个细分。这也可以提供更大的灵活性,因为您可以为每个连接单独更改颜色,添加方向箭头等。

在这里,我使用Python字典来保存您的连接信息。

final

enter image description here

根据您提供连接的方式,此处有重复的行,例如import matplotlib.pyplot as plt coords = [(0.0, 0.0), (1.0, 1.0), (1.0, 0.0), (2.0, 1.0), (2.0, 0.0), (3.0, 1.0)] connectivity = {0: (1,2), #coords[0] <--> coords[1], coords[2] 1: (0, 2, 3), #coords[1] <--> coords[0], coords[2], coords[3] 2: (0, 1, 4), #coords[2] <--> coords[0], coords[1], coords[4] 3: (1, 3, 5), #coords[3] <--> coords[1], coords[3], coords[5] 4: (2, 3, 5), #coords[4] <--> coords[2], coords[3], coords[5] 5: (3, 4) #coords[5] <--> coords[3], coords[4] } x, y = zip(*coords) plt.plot(x, y, 'o') # plot the points alone for k, v in connectivity.iteritems(): for i in v: # plot each connections x, y = zip(coords[k], coords[i]) plt.plot(x, y, 'r') plt.show() (0,1)。我假设你最终想要指挥方向,所以我把它们留在了。