我有一系列表面高度H
。
我想将曲面绘制为线框,并将值pcolormesh
或imshow
放在投影的底部(例如z=0
)。
import numpy as np
import matplotlib.pyplot as plot
from mpl_toolkits.mplot3d import Axes3D
H=np.arange(0,100)
H=H.reshpae(10,10) # <- just as simple example
x,y = np.meshgrid(range(0,20),range(0,20))
fig=plot.figure()
ax=fig.gca(projection='3d')
ax.plot_wireframe(x,y,H)
#plot 2D meshgrid here
fig.show()
当然pcolormesh仅适用于2D。但是使用countourf
并不会显示网格状结构。不同的步伐并没有改变轮廓。
我已经考虑过使用plot_surface
,但我不知道如何在改变颜色的同时进行2D投影。
答案 0 :(得分:0)
您可以使用平面图来模仿imshow。即您可以使用常量值绘制曲面,并根据数据值设置曲面的颜色。
如下所示。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib
H=np.arange(0,100)
H=H.reshape(10,10)
x,y = np.meshgrid(range(0,10),range(0,10))
fig=plt.figure()
ax=fig.gca(projection=Axes3D.name)
ax.plot_wireframe(x,y,H)
#plot 2D meshgrid here
cmap = plt.cm.plasma
norm = matplotlib.colors.Normalize(vmin=H.min(), vmax=H.max() )
colors = cmap(norm(H))
ax.plot_surface(x,y,np.zeros_like(x), cstride=1, rstride=1, facecolors=colors, shade=False)
#make a colorbar
sc = matplotlib.cm.ScalarMappable(cmap=cmap, norm=norm)
sc.set_array([])
plt.colorbar(sc)
plt.show()