从起点到目标点绘制线条的代码不起作用

时间:2014-11-29 12:17:04

标签: python matplotlib

我正在编写一个用于导航地图的简单python代码。 遍历地图后,我找到了起点和终点。 然后我想从起点到终点绘制一条线。

导航代码:

mymap2 = generateMap((20,20))
print mymap2

def find_start_goal():

    for i in range(20):
        for j in range(20):
            if mymap2[[i],[j]] == -3:
                print ("goal point Located Pos: [%d,%d]" % (j,i) )
                goal1 = [j,i]
            elif mymap2[[i],[j]] == -2:
                print ("Star point Located Pos: [%d,%d]" % (j,i) )
                start1 = [j,i]
            else:
                pass

    return start1 , goal1

start1 , goal1 = find_start_goal()

print "start = ", start1
print "goal = ", goal1
path = [start1,goal1]


plotMap(mymap2,path)

plotMap函数中用于绘制直线的代码:

plt.plot(path_[:][0], path_[:][1], color='red', linewidth=2.5)

问题是plt.plot期望变量XY作为前两个参数,其中X应该是一个元组:(x来自起点,距离目标点x,类似于该终点。

因此该行永远不会从起点到目标点。

那么plt.plot(pat_...)中的问题是什么?

我正在使用numpy和matplotlib。

1 个答案:

答案 0 :(得分:0)

在你的函数plotMap中,写下:

path_ = zip(*path_)

就在您的绘图线之前(虽然我想在您的代码中有一些更好的地方可以做到这一点,但是没有看到它,我们无法就此提出建议。)

这将为您提供path_的第一个元素中的起点和终点的x坐标以及第二个元素中的y坐标,就像plt.plot期望的那样:

示例:

>>> begin = [0,0]
>>> end = [10,5]
>>> path = [begin, end]
>>> zip(*path)
[(0, 10), (0, 5)]