matplotlib复值函数图

时间:2016-06-28 10:23:32

标签: python numpy matplotlib

在复杂矢量的matlab图中,将得到虚部与实部的图。

matplotlib中是否有等效函数?

显然这会奏效:

def plotcomplex(c, *args):
    plot(real(c), imag(c), args)

但是它已经存在吗?

3 个答案:

答案 0 :(得分:0)

似乎没有原生复数绘图功能。建立自己的。

答案 1 :(得分:0)

我本人对此进行了调查,因为将来自函数的向量(数组)输出划分为绘图函数的实部和虚部可能很不方便。例如,f(x).real, f(x).imag将调用该函数两次。我得到的最接近的结果是使用numpy的“ view”方法将复数向量转换为有序实数向量,从函数中返回该值,然后在plot函数中将其解压缩为“ *”。此示例在复杂平面上绘制超心形图案的示例说明了该技术:

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()

Hypercardioid Patterns

答案 2 :(得分:0)

只是稍微相关一点,但是您可以使用cplot(例如,我的一个项目)来使用domain coloring绘制复杂值函数,例如,

import cplot
import numpy

cplot.show(numpy.sin, -5, +5, -5, +5, 100, 100)

enter image description here