擅长:python、mysql、java
<p>我自己也研究过这个问题,因为将函数输出的向量(数组)分成plot函数的实部和虚部会有点不方便。例如,<code>f(x).real, f(x).imag</code>将调用函数两次。我得到的最接近的方法是用numpy“view”方法将复向量转换成有序实向量,从函数中返回,然后在plot函数中用“*”将其解包。这个在复杂平面上绘制超心形图案的示例说明了该技术:</p>
<pre class="lang-py prettyprint-override"><code>import numpy as np
import matplotlib.pyplot as plt
def z(n):
t = np.linspace(-np.pi, np.pi, 1000)
c = 0.25 * n
for n in range(1,n+1):
c = c - (-1) ** n * np.exp(1j * n * t) / (2 * n)
return c.view('(2,)float').T
plt.plot( *z(2), *z(3), *z(4), *z(5), *z(6), '-', lw=3 )
plt.axis('scaled')
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/O1zQv.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/O1zQv.png" alt="Hypercardioid Patterns"/></a></p>