使用pyplot绘制返回复数值的函数

3 投票
1 回答
773 浏览
提问于 2025-04-17 16:02

我在Facebook上看到了一张图片,觉得这会是一个学习新东西的好机会,所以想把它画出来。

爱情公式
(来源: akamaihd.net)

这是我写的代码:

import numpy as np
import scipy.special
import pylab

x = np.linspace( -1.0, 1.0, 200 )
y = np.sqrt(  1-np.square(np.complex64(x) ) ) + np.complex64( scipy.special.cbrt( np.square( x ) ) )
pylab.plot( np.complex64( x ), y )
pylab.show()

这是输出结果:

输出图像

我无法得到和图中一样的绘图。为了绘图,我把公式重新整理成了 y = f(x) 的形式,并把它转化成了上面的代码。

1 个回答

7
import matplotlib.pyplot as plt
import numpy as np

y, x = np.ogrid[-1:2:100j, -1:1:100j]
plt.contour(x.ravel(), y.ravel(), x**2 + (y-((x**2)**(1.0/3)))**2, [1])
plt.axis('equal')
plt.show()

这里输入图片描述


你可以调整宽高比,让这个曲线看起来更像心形:

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
y, x = np.ogrid[-1.5:2:1000j, -2:2:1000j]
plt.contour(x.ravel(), y.ravel(), x**2 + (y-((x**2)**(1.0/3)))**2, [1])
ax.set_aspect(0.75) 
plt.show()

这里输入图片描述

撰写回答