Python & Matplot: 怎么画简单的图形?


我想要根据给出的点来画出图形,比如


 rectangle = [(0,0),(0,1),(1,1),(1,0)]
hexagon = [(0,0),(0,1),(1,2),(2,1),(2,0),(1,-1)]
l_shape = [(0,0),(0,3),(1,3),(1,1),(3,1),(3,0)]
concave = [(0,0),(0,3),(1,3),(1,1),(2,1),(2,3),(3,3),(3,0)]

for points in [rectangle, hexagon, l_shape, concave]:
    xs, ys = zip(*points)
    plt.plot(xs, ys, 'o')
    plt.plot(xs, ys, '-')

    automin, automax = plt.xlim()
    plt.xlim(automin-0.5, automax+0.5)
    automin, automax = plt.ylim()
    plt.ylim(automin-0.5, automax+0.5)
    plt.show()

图片描述
有几个问题

  1. 怎么可以把 *zip 去掉?就是直接根据给出的点来画,而不需要拆成2组x,y坐标
  2. 怎么把图形画 完整 ?(因为是从第1个点坐标循环到最后1个点,上面这些都是缺了最后1条线的)
  3. points 当中的点可不可以没有顺序?有了点就直接画出这些图形。(比如采用convex hull?但是这里有些凹凸型的似乎不能直接用)

python matplotlib

跳坑的废柴 10 years, 1 month ago

Your Answer