回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我只想用点来画简单的形状,像这样:</p>
<pre><code>import matplotlib.pyplot as plt
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]:
# 1. Can I get rid of the zip? plot directly by points
# 2. How can I make the shape complete?
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)
# Can I display the shapes 2 in 1 line?
plt.show()
</code></pre>
<p>我的问题是
<img src="https://i.stack.imgur.com/ec18h.png" alt="enter image description here"/></p>
<ol>
<li>我怎样才能摆脱<code>*zip</code>?我是说,直接用点来画,而不是用2个数组。在</li>
<li>如何制作这些形状<code>complete</code>?既然我循环了所有的点,第一点和最后一点不能连接在一起,我该怎么做呢?在</li>
<li>我可以不按特定的点顺序画这个形状吗?(比如<code>convex hull</code>?)在</li>
</ol>