programing

matplotlib에서 빈 하위 플롯을 만들려면 어떻게 해야 합니까?

newsource 2023. 7. 24. 22:31

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

결과는 다음과 같습니다.

An image of a 3x2 grid of graphs, with no graph rendered in the bottom right cell

축을 유지하면서 모든 축 장식(예: 눈금 표시 및 레이블)을 숨기는 방법은 matplotlib plot에서 축 텍스트 숨기기 문제에 대한 허용된 대답을 참조하십시오.

이 질문이 처음 제기된 이후로 훨씬 개선된 하위 플롯 인터페이스가 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()

enter image description here

축을 사용하여 하위 그림을 숨길 수도 있습니다.set_message 메서드입니다.

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

(2,1)에 위치한 그림을 삭제하려면 다음을 사용할 수 있습니다.

import matplotlib.pyplot as plt
cfig,ax = plt.subplots(3,2)
cfig.delaxes(ax.flatten()[5])

새 버전의 matplotlib(3.4.0 이후)에서는 문자열 배열을 사용하여 하위 플롯 패턴(행 및 열)을 설계하고 이를 사용하여 matplotlib를 호출하여 그림을 만들 수 있습니다.pyplot.subplot_continue.

대신에cfig, ax = plt.subplots(3,2),사용하다cfig, axs = plt.subplot_mosaic(mosaic)정의합니다.mosaic이쪽:

mosaic = [['a', 'b'],
          ['c', 'd'],
          ['e', '.']]

이 패턴에서 빈 하위 플롯은 다음과 같이 표시됩니다.'.'(기본적으로 이 값은 통화에서 매개 변수화될 수 있습니다.)빈 하위 플롯은 생성되지도 않으므로 삭제할 필요가 없습니다.

표시할 축을 선택하려면 다음을 사용합니다.axs[id]어디에id모자이크 배열에서 하위 플롯을 식별하는 데 사용되는 문자열입니다.

예:

mosaic = [['b', 'a'], ['.', 'au']]
kw = dict(layout='constrained')
fig, axs = plt.subplot_mosaic(mosaic, **kw)

ax = axs['b']
ax.grid(axis='y')
ax.bar(n, d)

ax = axs['a']
ax.grid(axis='y')
ax.bar(n, prior)

[...]

enter image description here

와 함께subplot_mosaic빈 하위 플롯을 도입할 수 있을 뿐만 아니라 필요한 모자이크 배열을 만드는 것만으로 여러 행 및/또는 열에 하위 플롯을 만들기 위해 '셀'을 병합할 수도 있습니다. 나머지 코드는 변경되지 않습니다.추가로mosaic배열일 필요는 없으며 여러 줄의 문자열일 수도 있습니다.: 다음을 사용하는 복잡한 의미의 그림 구성.

"""
A.C
BBB
.D.
"""

결과:

enter image description here

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