在python语言中,根据线段的索引绘制线段的列表

2024-05-28 23:44:21 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个顶点列表和一个线段列表(指线段顶点的索引),绘制所有可能不构成连续直线的线段的最佳方法是什么?在

我可以这样做,但显然很笨拙;有更好的方法吗?在

vertices=[[0,0],[1,1],[1,2],[4,1]]
segs=[[0,1],[0,2],[2,3]] 

for seg in segs:
    x = vertices[seg[0]][0], vertices[seg[1]][0]
    y = vertices[seg[0]][1], vertices[seg[1]][1]
    plot(x, y, 'k')

This is what I get

@仙人掌女给出了一种有效的方法。这是完整的代码。在

^{pr2}$

Tags: 方法代码in列表forplot绘制segs
3条回答

我不知道这是不是更好,但你可以压缩你的顶点和分段,然后像这样循环。在

vertices=[[0,0],[0,1],[3,2]]
segs=[[0,1],[0,2],[2,3]]

for v,s in zip(vertices, segs):
    x = v[0], s[0]
    y = v[1], s[1]
    plot(x,y,'k')

我不确定我是否完全理解你的代码,但你会得到一个错误,因为你试图访问一个不存在的索引。这只是1:1的关系。索引x顶点到索引x

您可能想要lineCollection。给它一个元组列表,其中每个元组是一个顶点,每个列表包含一个段的所有顶点。在

lines = [[tuple(vertices[j]) for j in i]for i in segs]

lc = matplotlib.collections.LineCollection(lines)

然后使用add_collection将其添加到轴上。在

这可能是一个更像Python的解决方案:

for v1,v2 in segs:
    x,y = zip(vertices[v1],vertices[v2])
    plot(x,y,'k')

假设我理解你想做什么。因为它们不一定是连续的,所以我认为无论发生什么,您都必须遍历segs并单独绘制它们。在

相关问题 更多 >

    热门问题