서브 플롯의 파이썬 xticks


84

단일 imshow플롯을 플롯하면 사용할 수 있습니다

fig, ax = plt.subplots()
ax.imshow(data)
plt.xticks( [4, 14, 24],  [5, 15, 25] )

내 xtick 레이블을 대체합니다.

이제 저는 다음을 imshow사용하여 12 개의 플롯을 플로팅하고 있습니다.

f, axarr = plt.subplots(4, 3)
axarr[i, j].imshow(data)

이 서브 플롯 중 하나에 대한 xtick를 어떻게 변경할 수 있습니까? 을 사용하여 서브 플롯의 축에만 액세스 할 수 있습니다 axarr[i, j]. plt하나의 특정 서브 플롯에만 액세스하려면 어떻게 해야합니까?

답변:


164

두 가지 방법이 있습니다.

  1. 서브 플롯 객체 (예 : ax.set_xticksax.set_xticklabels) 의 axes 메서드를 사용 하거나
  2. plt.sca플롯 상태 머신 (예 : plt인터페이스) 의 현재 축을 설정하는 데 사용 합니다 .

예를 들어 (이것은 또한 setp모든 서브 플롯의 속성을 변경하는 데 사용 하는 방법을 보여줍니다 ) :

import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=3, ncols=4)

# Set the ticks and ticklabels for all axes
plt.setp(axes, xticks=[0.1, 0.5, 0.9], xticklabels=['a', 'b', 'c'],
        yticks=[1, 2, 3])

# Use the pyplot interface to change just one subplot...
plt.sca(axes[1, 1])
plt.xticks(range(3), ['A', 'Big', 'Cat'], color='red')

fig.tight_layout()
plt.show()

여기에 이미지 설명 입력


어떤 버전을 사용하고 있습니까? 나는군요 AttributeError: Unknown property xtickslabels위해plt.setp(ax, xtickslabels=xticks)
프레드릭 노르

20

다음 솔루션이 제안 된 matplotlib 저장소 의 (매우) 최근 답변 을 참조하십시오 .

  • xticklabels를 설정하려면 :

    ax.set_xticks([1,4,5]) 
    ax.set_xticklabels([1,4,5], fontsize=12)
    
  • 기본값과 위치를 사용하여 xticklabels의 글꼴 크기 만 늘리려면 (개인적으로 자주 필요하고 매우 편리하다고 생각하는) :

    ax.tick_params(axis="x", labelsize=12) 
    
  • 한 번에 모두 수행하려면 :

    plt.setp(ax.get_xticklabels(), fontsize=12, fontweight="bold", 
             horizontalalignment="left")`
    
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.