如何解决根据变量在Matplotlib中更改表面颜色
我已经使用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,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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。