Matplotlib дает неожиданную форму - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь вывести на поверхность геометрическую функцию:

import matplotlib
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.cm as cmx
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import pylab
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
theta, phi = np.linspace(1e-5, 2 * np.pi-0.001, 400), np.linspace(1e-5, 3*np.pi/5.5, 400)
PHI, THETA = np.meshgrid(theta, phi)
theta1 = np.sqrt(7.5*(-1+np.sqrt(1-0.8*0.1*1./8.*(-8. + THETA*(5 + 3.*np.cos(2*PHI))/np.tan(THETA) + (5. + np.cos(THETA))* (np.sin(PHI))**2))))
R = (np.sin(theta1)+0.00000001)/(np.sin(theta1 + THETA)+0.00000001)
X = R * np.cos(THETA)
Y = R * np.sin(THETA) * np.cos(PHI)
Z = R * np.sin(THETA) * np.sin(PHI)
surf = ax.plot_surface(X, Y, Z)
plt.show()

В носу я получаю излом, который совсем не ожидается.Я должен получить гладкий параболоидный тип к носу.Есть ли способ сгладить это?

Примечание: если я попробую SphericalPlot3D в Mathematica, у меня не возникнет такой проблемы.plot the above code produces

...