matplotlib 可重现图

matplotlib reproducible plot

我试图在 python 中绘制一个带有可变参数的复杂函数,但我发现了一个我无法解释的差异。我的代码如下所示:

import matplotlib.pyplot as plt
from numpy import pi, exp, real, imag, linspace


a = 1
b = 6
c = -14
coeff1 = 1
coeff2 = -1 / 2
coeff3 = 1j / 3


def f(t):
    return (
        coeff1 * exp(a * 1j * t) + coeff2 * exp(b * 1j * t) + coeff3 * exp(c * 1j * t)
    )


t = linspace(0, 2 * pi, 1000)

ft = f(t)
plt.plot(real(ft), imag(ft))
plt.plot(
    real(exp(1j * t) - exp(6j * t) / 2 + 1j * exp(-14j * t) / 3),
    imag(exp(1j * t) - exp(6j * t) / 2 + 1j * exp(-14j * t) / 3),
)

# These two lines make the aspect ratio square
fig = plt.gcf()
fig.gca().set_aspect("equal")

plt.show()

我希望图中以红色和绿色显示的两个函数是相同的。但事实显然并非如此。有人可以告诉我我错过了什么吗?谢谢

尝试用浮点数替换所有整数。可能是 python2 类型的问题。

在 python3 我正在重现您的代码,它们是相同的。我的依赖版本是:

numpy==1.14.0
matplotlib==2.2.2

更新。问题是 -1/2 在 python2

上等于 -1