2017-09-13 2 views
0

matplotlib에 그림을 만들려고합니다. 왼쪽에는 3D 표면이 있고 오른쪽에는 해당 등고선지도가 있습니다.Python Subplot 3D 표면 및 히트 맵

저는 subplots을 사용했으나 등고선지도 (표면에 빈 공간이 있음)와 표면에 대한 별도의 그림 만 보여줍니다.

이 그림을 하나의 그림에 나란히 만들 수 있습니까?

편집 :

import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import axes3d 
import numpy as np 

x = np.arange(-5, 5, 0.25) 
y = np.arange(-5, 5, 0.25) 
x, y = np.meshgrid(x, y) 
r = np.sqrt(x**2 + y**2) 
z = np.sin(r) 

fig, (surf, cmap) = plt.subplots(1, 2) 

fig = plt.figure() 
surf = fig.gca(projection='3d') 

surf.plot_surface(x,y,z) 

cmap.contourf(x,y,z,25) 

plt.show() 
+0

현재 어떻게하고 있는지 코드를 보여줄 수 있습니까? –

+0

그래도 원하는 출력을 보여줍니다. – Serenity

+1

이에 대한 공식적인 표현이 있습니다 (https://matplotlib.org/examples/mplot3d/mixed_subplots_demo.html). 구현에 문제가 있으면 [ask] 및 [mcve]를 참조하십시오. – ImportanceOfBeingErnest

답변

1

내가 다른 예측과 플롯의 격자를 만들기 위해 plt.subplots()를 사용하는 it's hard 추측 다음과 같이 코드입니다.

그래서 가장 직접적인 해결책은 plt.subplot으로 각 서브 그림을 개별적으로 만드는 것입니다.

import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import axes3d 
import numpy as np 

x = np.arange(-5, 5, 0.25) 
y = np.arange(-5, 5, 0.25) 
x, y = np.meshgrid(x, y) 
r = np.sqrt(x**2 + y**2) 
z = np.sin(r) 

ax = plt.subplot(121, projection='3d') 
ax.plot_surface(x,y,z) 

ax2 = plt.subplot(122) 
ax2.contourf(x,y,z,25) 

plt.show() 

당연히 더 복잡한 그리드 구조에 대해 gridspec 기능을 사용할 수도 있습니다.