[Matplotlib] 텍스트 박스 삽입

Matplotlib Plot에 텍스트박스를 넣는 방법으로 text, offsetbox 등이 있다.
annotation은 이름 그대로 설명을 다는 기능이라 내가 원하는 기능은 아니었다.

먼저 text를 좀 써봤는데 정렬문제가 좀 있었다. [Docs]

props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
ax.text(0.05, 0.05, textstr, transform=ax.transAxes, fontsize=10,
        horizontalalignment='left', verticalalignment='bottom', bbox=props)
나름 그럴싸하긴 한데..

비주얼이 참 마음에 들긴 하는데, 텍스트 정렬이 원하는대로 안되는 문제가 있다.
수직정렬과 수평정렬이 박스 기준이 아니라 텍스트 기준이어서, 우측 상단으로 넣으면 텍스트가 왼쪽 정렬이 된다.

다른 방법을 찾아보니 offsetbox를 쓰는 방법이 있었다.
text의 경우 박스 위치를 하드코딩으로 정해줘야하지만, offsetbox는 loc 속성을 통해 위치를 자동으로 지정할 수 있다.
물론 loc을 기준으로 패딩도 가능하다.
자세한건 여기를 참고하면 된다.

textbox = offsetbox.AnchoredText(textstr, loc=1)
ax.add_artist(textbox)
# 또는 plt.gca().add_artist(textbox)
(흡족)

비주얼이 마음에 안들긴 하는데, 정렬은 잘 된다.

댓글 남기기