2017-03-23 1 views
0

나는 표면 높이가 배열이 H입니다. 표면을 와이어 프레임으로 플롯하고 돌출부 하단에 pcolormesh 또는 imshow 등의 값을 입력하고 싶습니다 (예 : z=0).3d 평면에서 2 차원 컬러 그리드 (예 : pcolormesh)를 그릴 때

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

아마이 매우 밀접하게 관련되어 http://stackoverflow.com/questions/10917495/matplotlib-imshow-in-3d-plot – ImportanceOfBeingErnest

답변

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

관련 문제