developer tip

서브 플롯의 파이썬 xticks

copycodes 2020. 12. 15. 19:27
반응형

서브 플롯의 파이썬 xticks


단일 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하나의 특정 서브 플롯에만 액세스하려면 어떻게 해야합니까?


두 가지 방법이 있습니다.

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

여기에 이미지 설명 입력


다음 솔루션이 제안 된 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")`
    

이후 버전의 Matplotlib에서 set_yticks같이 set_xticks함수가 제거되었습니다. 내가 한 것은 x, y 틱의 크기를 설정하는 대신 그림 크기를 변경 한 것입니다.

plt.figure(1, dpi=200, figsize=(20,20))

나는 그것이 다소 직관적이지 않다는 것을 알고 있지만 그것이 나를 위해 일한 것입니다 ... Matplotlib의 이후 버전 에서이 문제를 해결하는 더 좋은 방법이 있는지 알려주십시오. 감사

참조 URL : https://stackoverflow.com/questions/19626530/python-xticks-in-subplots

반응형