[python] matplotlib 플롯의 왼쪽 상단 모서리에 텍스트 넣기

matplotlib 그림의 왼쪽 상단 (또는 오른쪽 상단) 구석에 텍스트를 넣으려면 어떻게해야합니까? 예를 들어 그것이 plt.scatter ()라면, 스 캐터의 정사각형 안에있는 무언가는 가장 왼쪽 상단 모서리에 놓이게됩니다.

예를 들어 데이터 세트에서 데이터 세트로 변경 될 것이기 때문에 플롯되는 산점도의 규모를 이상적으로 알지 못하고이 작업을 수행하고 싶습니다. 텍스트가 대략 왼쪽 상단에 있거나 대략 오른쪽 상단에 있기를 원합니다. 범례 유형 위치 지정을 사용하면 어쨌든 산점도 점과 겹치지 않아야합니다.

감사!



답변

사용할 수 있습니다 text.

text(x, y, s, fontsize=12)

text 좌표는 축을 기준으로 지정 될 수 있으므로 텍스트의 위치는 플롯의 크기와 무관합니다.

기본 변환은 텍스트가 데이터 좌표에 있음을 지정합니다. 또는 축 좌표에 텍스트를 지정할 수 있습니다 (0,0은 왼쪽 아래, 1,1은 오른쪽 위). 아래 예제는 좌표축의 중앙에 텍스트를 배치합니다.

text(0.5, 0.5,'matplotlib',
     horizontalalignment='center',
     verticalalignment='center',
     transform = ax.transAxes)

텍스트가 분산 된 지점을 방해하는 것을 방지하는 것은 더 어렵습니다. 더 쉬운 방법은 y_axis (ymax in ylim((ymin,ymax)))를 포인트의 최대 y 좌표보다 약간 높은 값으로 설정하는 것입니다. 이렇게하면 항상 텍스트를위한 여유 공간이 있습니다.

편집 : 여기에 예가 있습니다.

In [17]: from pylab import figure, text, scatter, show
In [18]: f = figure()
In [19]: ax = f.add_subplot(111)
In [20]: scatter([3,5,2,6,8],[5,3,2,1,5])
Out[20]: <matplotlib.collections.CircleCollection object at 0x0000000007439A90>
In [21]: text(0.1, 0.9,'matplotlib', ha='center', va='center', transform=ax.transAxes)
Out[21]: <matplotlib.text.Text object at 0x0000000007415B38>
In [22]:

여기에 이미지 설명 입력

ha 및 va 매개 변수는 삽입 지점을 기준으로 텍스트 정렬을 설정합니다. 즉. ha = ‘left’는 프레임을 수동으로 축소 (좁게) 할 때 긴 텍스트가 왼쪽 축을 벗어나는 것을 방지하는 좋은 설정입니다.


답변

한 가지 해결책은 plt.legend실제 범례를 원하지 않더라도 함수 를 사용하는 것 입니다. lockeyterm 을 사용하여 범례 상자의 위치를 ​​지정할 수 있습니다 . 이 웹 사이트에서 더 많은 정보를 찾을 수 있지만 범례를 배치하는 방법을 보여주는 예제도 포함했습니다.

ax.scatter(xa,ya, marker='o', s=20, c="lightgreen", alpha=0.9)
ax.scatter(xb,yb, marker='o', s=20, c="dodgerblue", alpha=0.9)
ax.scatter(xc,yc marker='o', s=20, c="firebrick", alpha=1.0)
ax.scatter(xd,xd,xd, marker='o', s=20, c="goldenrod", alpha=0.9)
line1 = Line2D(range(10), range(10), marker='o', color="goldenrod")
line2 = Line2D(range(10), range(10), marker='o',color="firebrick")
line3 = Line2D(range(10), range(10), marker='o',color="lightgreen")
line4 = Line2D(range(10), range(10), marker='o',color="dodgerblue")
plt.legend((line1,line2,line3, line4),('line1','line2', 'line3', 'line4'),numpoints=1, loc=2) 

이므로 loc=2범례는 플롯의 왼쪽 상단에 있습니다. 그리고 텍스트가 플롯과 겹치는 경우를 사용하여 더 작게 만들 수 있습니다 legend.fontsize. 그러면 범례가 더 작아집니다.


답변