<p>正如@Hooked所说,这是因为<code>xy1</code>是二维的,<code>plot</code>将二维数组绘制为两列,而不是x和y列。你知道吗</p>
<p>当前,您的列表如下所示:</p>
<pre><code>In [14]: xy1
Out[14]:
[[1, 1],
[2, 4],
[3, 9],
[4, 16],
[5, 25],
[6, 36],
[7, 49],
[8, 64],
[9, 81],
[10, 100]]
</code></pre>
<p>要将<code>x</code>与<code>y</code>进行对比,需要将其解压到两个列表中。可以使用<code>zip</code>和<code>*</code>运算符来执行此操作:</p>
<pre><code>In [25]: xy2=zip(*xy1)
In [26]: xy2
Out[26]: [(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), (1, 4, 9, 16, 25, 36, 49, 64, 81, 100)]
</code></pre>
<p>然后可以使用<code>*</code>操作符再次解包来绘制:</p>
<pre><code>In [28]: plt.plot(*xy2)
Out[28]: [<matplotlib.lines.Line2D at 0x10808c090>]
In [29]: plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/CEccm.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/CEccm.png" alt="enter image description here"/></a></p>
<p>或者,如果将<code>xy1</code>转换为<code>numpy.array</code>,则可以使用<code>transpose</code>函数:</p>
<pre><code>In [48]: import numpy as np
In [49]: xy3=np.array(xy1)
In [50]: xy3
Out[50]:
array([[ 1, 1],
[ 2, 4],
[ 3, 9],
[ 4, 16],
[ 5, 25],
[ 6, 36],
[ 7, 49],
[ 8, 64],
[ 9, 81],
[ 10, 100]])
In [51]: plt.plot(*xy3.transpose())
</code></pre>