Разъяснение на гладкой поверхности Участок с Pyplot - PullRequest
0 голосов
/ 28 августа 2018

Этот вопрос основан на: Гладкая поверхность с Pyplot

Я пытаюсь получить пустышку на своем участке. Я определяю свои оси x и y, используя numpy.linspace, но кажется, что не имеет значения, сколько делений я делаю, график достигает точки, где он не станет более плавным, он выглядит так:

enter image description here

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

import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from scipy import interpolate

def func(x,y):
    return np.cos(y*x)

def short_proj():
  return np.dot(Axes3D.get_proj(ax), scale)

# Computing grid ---------------------------------------------------------
x_limits = [0,10]
y_limits = [-5,5]
xaxis = np.linspace(x_limits[0], x_limits[1], 100)
yaxis = np.linspace(y_limits[0], y_limits[1], 100)
x = xaxis[:,None]
y = yaxis[None,:]
z = func(x,y)

tck = interpolate.bisplrep(x*y,y*x,z,s=0)
znew = interpolate.bisplev(xaxis,yaxis,tck)
# ------------------------------------------------------------------------


# Plotting ---------------------------------------------------------------
fig = plt.figure()
ax = fig.gca(projection='3d')

x_scale = 1
y_scale = (y_limits[1]-y_limits[0])/(x_limits[1]-x_limits[0])
z_scale = (np.amax(z)-np.amin(z))/(x_limits[1]-x_limits[0])
scale=np.diag([x_scale, y_scale, z_scale, 1.0])
scale=scale*(1.0/scale.max())
scale[3,3]=1.0
ax.get_proj=short_proj

surf = ax.plot_surface(x, y, znew, cmap=plt.cm.jet) # to plot the original graph just change 'znew' for 'z'
plt.show()
# ------------------------------------------------------------------------

Может ли кто-нибудь подсказать мне, как получить более гладкую поверхность на этом участке?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...