matplotlib에서 서브 플롯 그룹 (예 : 3 x 2)을 만들고 있지만 데이터 세트가 6 개 미만입니다. 나머지 서브 플롯은 어떻게 비워 둘 수 있습니까?
배열은 다음과 같습니다.
+----+----+
| 0,0| 0,1|
+----+----+
| 1,0| 1,1|
+----+----+
| 2,0| 2,1|
+----+----+
이것은 여러 페이지에 대해 계속 될 수 있지만 마지막 페이지에는 예를 들어 2,1 상자에 대한 5 개의 데이터 세트가 비어 있습니다. 그러나 나는 그림을 다음과 같이 선언했습니다.
cfig,ax = plt.subplots(3,2)
따라서 서브 플롯 2,1의 공간에는 눈금과 레이블이있는 기본 축 집합이 있습니다. 어떻게 프로그래밍 방식으로 해당 공간을 비워두고 축없이 렌더링 할 수 있습니까?
답변
필요하지 않은 축은 항상 숨길 수 있습니다. 예를 들어 다음 코드는 6 번째 축을 완전히 끕니다.
import matplotlib.pyplot as plt
hf, ha = plt.subplots(3,2)
ha[-1, -1].axis('off')
plt.show()
결과는 다음과 같습니다.
또는 축을 유지하지만 모든 축 장식 (예 : 눈금 및 레이블)을 숨기는 방법은 matplotlib 플롯에서 축 텍스트 숨기기 질문에 대한 허용 된 답변을 참조하십시오 .
답변
훨씬 향상된 부가 적 줄거리 인터페이스는 이 질문에 첫번째 질문을 받았다부터하기 matplotlib 추가되었습니다. 여기에서 추가 항목을 숨기지 않고 필요한 서브 플롯을 정확하게 만들 수 있습니다. 또한 서브 플롯은 추가 행 또는 열에 걸쳐있을 수 있습니다.
import pylab as plt
ax1 = plt.subplot2grid((3,2),(0, 0))
ax2 = plt.subplot2grid((3,2),(0, 1))
ax3 = plt.subplot2grid((3,2),(1, 0))
ax4 = plt.subplot2grid((3,2),(1, 1))
ax5 = plt.subplot2grid((3,2),(2, 0))
plt.show()
답변
Axes.set_visible () 메서드를 사용하여 서브 플롯을 숨길 수도 있습니다.
import matplotlib.pyplot as plt
import pandas as pd
fig = plt.figure()
data = pd.read_csv('sampledata.csv')
for i in range(0,6):
ax = fig.add_subplot(3,2,i+1)
ax.plot(range(1,6), data[i])
if i == 5:
ax.set_visible(False)
답변
필요할 때 서브 플롯을 생성하는 옵션일까요?
import matplotlib
matplotlib.use("pdf")
import matplotlib.pyplot as plt
plt.figure()
plt.gcf().add_subplot(421)
plt.fill([0,0,1,1],[0,1,1,0])
plt.gcf().add_subplot(422)
plt.fill([0,0,1,1],[0,1,1,0])
plt.gcf().add_subplot(423)
plt.fill([0,0,1,1],[0,1,1,0])
plt.suptitle("Figure Title")
plt.gcf().subplots_adjust(hspace=0.5,wspace=0.5)
plt.savefig("outfig")