code

matplotlib에서 빈 서브 플롯을 어떻게 만들 수 있습니까?

codestyles 2020. 11. 14. 10:14
반응형

matplotlib에서 빈 서브 플롯을 어떻게 만들 수 있습니까?


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")

참고 URL : https://stackoverflow.com/questions/10035446/how-can-i-make-a-blank-subplot-in-matplotlib

반응형