我已经在Paul的帮助下修改了我的应用程序的mplot3d 示例代码.代码如下:
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = 10 * np.outer(np.cos(u), np.sin(v))
y = 10 * np.outer(np.sin(u), np.sin(v))
z = 10 * np.outer(np.ones(np.size(u)), np.cos(v))
z1 = z * np.cos(0.5*x)
N = z1 / z1.max() # normalize 0..1
surf = ax.plot_surface(x, y, z, rstride=1, cstride=1, facecolors=cm.jet(N), linewidth=0, antialiased=False, shade=False)
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show() …Run Code Online (Sandbox Code Playgroud) 我想在matplotlib中将surf命令从MATLAB转换为plot_surface命令.
我面临的挑战是在plot_surface命令中使用cmap函数为渐变着色表面.
这是matlab脚本
% Matlab Commands
x = -5:.25:5; y = x
[x,y] = meshgrid(x);
R = sqrt(x.^2 + y.^2);
Z = sin(R)
surf(x,y,Z,gradient(Z))
Run Code Online (Sandbox Code Playgroud)
这个命令的数字可以在这里找到.(http://www.mathworks.com/help/techdoc/visualize/f0-18164.html#f0-46458)
这是python scipt当使用python和matplotlib创建类似的函数时,我无法使用渐变为表面着色.
# Python-matplotlib Commands
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 …Run Code Online (Sandbox Code Playgroud)