根据变量更改 Matplotlib 中的表面颜色
Change surface color in Matplotlib based on a variable
我使用 Matplotlib 绘制了一个简单的函数作为 3D 图。现在,我想创建一个颜色图,根据 u
和 v
函数中导出的速度为其着色。为此,我想使用 c
中看到的函数。我应该怎么做呢?提前谢谢你。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x = np.linspace(-2, 2, 20)
y = np.linspace(-2, 2, 20)
X, Y = np.meshgrid(x, y)
h = np.exp(-X**2 - Y**2) # plotted function
u = -2*X*np.exp(-X**2 - Y**2) # speed in x-direction
v = -2*Y*np.exp(-X**2 - Y**2) # speed in y-direction
c = np.sqrt(u**2 + v**2) # colormap derives from this
fig = plt.figure(figsize = (8, 7), facecolor='white')
ax = fig.add_subplot(projection='3d')
ax.plot_surface(X, Y, h)
plt.show()
试试这个
from matplotlib import cm
fig = plt.figure(figsize = (8, 7), facecolor='white')
ax = fig.add_subplot(projection='3d')
surf = ax.plot_surface(X, Y, h, rstride=1, cstride=1, facecolors = cm.jet(c/np.amax(c)),
linewidth=0, antialiased=False)
plt.show()
我使用 Matplotlib 绘制了一个简单的函数作为 3D 图。现在,我想创建一个颜色图,根据 u
和 v
函数中导出的速度为其着色。为此,我想使用 c
中看到的函数。我应该怎么做呢?提前谢谢你。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x = np.linspace(-2, 2, 20)
y = np.linspace(-2, 2, 20)
X, Y = np.meshgrid(x, y)
h = np.exp(-X**2 - Y**2) # plotted function
u = -2*X*np.exp(-X**2 - Y**2) # speed in x-direction
v = -2*Y*np.exp(-X**2 - Y**2) # speed in y-direction
c = np.sqrt(u**2 + v**2) # colormap derives from this
fig = plt.figure(figsize = (8, 7), facecolor='white')
ax = fig.add_subplot(projection='3d')
ax.plot_surface(X, Y, h)
plt.show()
试试这个
from matplotlib import cm
fig = plt.figure(figsize = (8, 7), facecolor='white')
ax = fig.add_subplot(projection='3d')
surf = ax.plot_surface(X, Y, h, rstride=1, cstride=1, facecolors = cm.jet(c/np.amax(c)),
linewidth=0, antialiased=False)
plt.show()