在3d平面中绘制2d彩色网格(例如,pcolormesh)

时间:2017-03-23 14:34:50

标签: python matplotlib contour surface imshow

我有一系列表面高度H。 我想将曲面绘制为线框,并将值pcolormeshimshow放在投影的底部(例如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投影。

1 个答案:

答案 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()

enter image description here