请教各位大神如何用Python画出如下函数图形

(x^2+9/4*y^2+z^2-1)^3-x^2*z^3-9/80*y^2*z^3==0

你有三个变量,可以在一定区域内,以某个间隔精度,遍历x y,利用根据方程算出z,这个方程式你可以自己转换下。
然后调用Matplotlib绘三维图
https://blog.csdn.net/jasonzhoujx/article/details/81780774


补充一下,数值算法理论上可行,代码如下

import numpy as np
import matplotlib.pyplot as plt
import math
import mpl_toolkits.mplot3d
import sympy as sympy


def solvez(x, y):
    z = sympy.symbols('z')
    result = 0.0    
    try:
        result = float(sympy.solve((x**2+9/4*y**2+z**2-1)**3-x**2*z**3-9/80*y**2*z**3, z)[0].evalf())
    except TypeError as e:
        pass
    return result

fig = plt.figure()  #定义新的三维坐标轴
ax3 = plt.axes(projection='3d')

#定义三维数据
xx = np.arange(-2,2,0.1)
yy = np.arange(-2,2,0.1)
X, Y = np.meshgrid(xx, yy)

Z = np.zeros((len(X), len(Y)), dtype=float)


for i in range(0,len(X)):
    for j in range(0,len(Y)):
        Z[i][j] = solvez(X[i][j],Y[i][j])

#作图
ax3.plot_surface(X,Y,Z,cmap='rainbow')
#ax3.contour(X,Y,Z, zdim='z',offset=-2,cmap='rainbow)   #等高线图,要设置offset,为Z的最小值
plt.show()

实际上比较困难,在于没有办法知道解的可行范围,算出来区域之外无解都是复数解

import numpy as np
import matplotlib.pyplot as plt
import math
import mpl_toolkits.mplot3d

x, y = np.mgrid[-2:2:0.01, -2:2:0.01]

z=根据xy算出z的表达式,根据你的自己可以改写的
ax = plt.subplot(111, projection='3d') 
ax.plot_surface(x, y, z, rstride=1, cstride=1, cmap='rainbow', alpha=0.9)#绘面
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.show()