matplotlib 플롯의 왼쪽 위 모서리에 텍스트 삽입
매트플로트립 그림의 왼쪽 위(또는 오른쪽 위) 모서리에 텍스트를 넣으려면 어떻게 해야 합니까? 예를 들어 왼쪽 위 범례가 있는 위치 또는 그림 위에서 왼쪽 위 모서리에 텍스트를 넣을 수 있습니까?예를 들어, 그것이plt.scatter()
그런 다음 가장 왼쪽 상단 모서리에 산란의 제곱 안에 있을 것입니다.
예를 들어, 데이터 집합에서 데이터 집합으로 변경되기 때문에 표시되는 산점도의 척도를 이상적으로 알지 못하고 이 작업을 수행하려고 합니다.저는 텍스트가 대략적으로 왼쪽 위에 있거나 대략적으로 오른쪽 위에 있었으면 합니다.범례 유형이 배치된 경우에는 산점도 점과 겹치지 않아야 합니다.
사용할 수 있습니다.
plt.text(x, y, s, fontsize=12)
text
좌표는 축을 기준으로 지정할 수 있으므로 텍스트의 위치는 플롯의 크기와 무관합니다.
기본 변환은 텍스트가 데이터 좌표에 있음을 지정합니다. 또는 축 좌표에 텍스트를 지정할 수 있습니다(0, 0은 왼쪽 아래, 1은 오른쪽 위).아래 예제에서는 축의 중앙에 텍스트를 배치합니다.
plt.text(0.5, 0.5, 'matplotlib',
horizontalalignment='center',
verticalalignment='center',
transform = ax.transAxes)
텍스트가 산포의 어떤 점과도 간섭하지 않도록 하는 것이 더 어렵습니다.더 쉬운 방법은 y_축(ymax in)을 설정하는 것입니다.ylim((ymin,ymax))
) 포인트의 최대 좌표보다 약간 높은 값으로 표시됩니다.이렇게 하면 항상 텍스트에 사용할 수 있는 공간이 확보됩니다.
편집: 예를 들어 보겠습니다.
from matplotlib import pyplot as plt
f, ax = plt.subplots()
plt.scatter([3,5,2,6,8],[5,3,2,1,5])
plt.text(.01, .99, 'matplotlib', ha='left', va='top', transform=ax.transAxes)
f.tight_layout()
그ha
그리고.va
매개변수는 삽입점을 기준으로 텍스트의 정렬을 설정합니다.예를ha='left'
프레임을 수동으로 축소(좁게)할 때 긴 텍스트가 왼쪽 축을 벗어나는 것을 방지하는 데 적합한 세트입니다.
matplotlib
원본 답변이 게시되었을 때와 다소 다릅니다.matplotlib.pyplot.text
matplotlib.axes.Axes.text
- 이 대답은 고급 api formatplotlib인 seavborn과 관련이 있습니다.
- 테스트 대상
python 3.10
,matplotlib 3.5.1
,seaborn 0.11.2
import matplotlib.pyplot as plt
plt.figure(figsize=(6, 6))
plt.text(0.1, 0.9, 'text', size=15, color='purple')
# or
fig, axe = plt.subplots(figsize=(6, 6))
axe.text(0.1, 0.9, 'text', size=15, color='purple')
둘 다의 출력
- matplotlib에서: 정확한 텍스트 레이아웃
- 데이터 또는 축 좌표에서 텍스트를 정밀하게 레이아웃할 수 있습니다.
import matplotlib.pyplot as plt
# Build a rectangle in axes coords
left, width = .25, .5
bottom, height = .25, .5
right = left + width
top = bottom + height
ax = plt.gca()
p = plt.Rectangle((left, bottom), width, height, fill=False)
p.set_transform(ax.transAxes)
p.set_clip_on(False)
ax.add_patch(p)
ax.text(left, bottom, 'left top',
horizontalalignment='left',
verticalalignment='top',
transform=ax.transAxes)
ax.text(left, bottom, 'left bottom',
horizontalalignment='left',
verticalalignment='bottom',
transform=ax.transAxes)
ax.text(right, top, 'right bottom',
horizontalalignment='right',
verticalalignment='bottom',
transform=ax.transAxes)
ax.text(right, top, 'right top',
horizontalalignment='right',
verticalalignment='top',
transform=ax.transAxes)
ax.text(right, bottom, 'center top',
horizontalalignment='center',
verticalalignment='top',
transform=ax.transAxes)
ax.text(left, 0.5 * (bottom + top), 'right center',
horizontalalignment='right',
verticalalignment='center',
rotation='vertical',
transform=ax.transAxes)
ax.text(left, 0.5 * (bottom + top), 'left center',
horizontalalignment='left',
verticalalignment='center',
rotation='vertical',
transform=ax.transAxes)
ax.text(0.5 * (left + right), 0.5 * (bottom + top), 'middle',
horizontalalignment='center',
verticalalignment='center',
transform=ax.transAxes)
ax.text(right, 0.5 * (bottom + top), 'centered',
horizontalalignment='center',
verticalalignment='center',
rotation='vertical',
transform=ax.transAxes)
ax.text(left, top, 'rotated\nwith newlines',
horizontalalignment='center',
verticalalignment='center',
rotation=45,
transform=ax.transAxes)
plt.axis('off')
plt.show()
해저 축 수준 그림
import seaborn as sns
# sample dataframe
flights = sns.load_dataset("flights")
fig, ax = plt.subplots(figsize=(6, 6))
sns.lineplot(data=flights, x="year", y="passengers", ax=ax)
ax.text(1950, 500, 'flights with CI', size=15, color='purple')
해상 모형 수준 그림
tips = sns.load_dataset('tips')
g = sns.relplot(data=tips, x="total_bill", y="tip", hue="day", col="time")
# iterate through each axes
for ax in g.axes.flat:
ax.text(10, 9, "Who's Hungy?", size=15, color='purple')
한 가지 해결책은 다음과 같습니다.plt.legend
실제 범례를 원하지 않더라도 기능.다음을 사용하여 범례 상자의 위치를 지정할 수 있습니다.loc
중요 용어자세한 내용은 이 웹 사이트에서 확인할 수 있지만 범례를 배치하는 방법에 대한 예도 포함되어 있습니다.
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
그러면 범례가 작아질 것입니다.
언급URL : https://stackoverflow.com/questions/8482588/putting-text-in-top-left-corner-of-matplotlib-plot
'programing' 카테고리의 다른 글
복제 시 Git 하위 모듈 폴더 비우기 (0) | 2023.07.19 |
---|---|
Firebase 스토리지 비디오 스트리밍 (0) | 2023.07.19 |
Vue에서 반복 테이블 행의 확인란 값을 배열로 전달하는 방법은 무엇입니까? (0) | 2023.07.19 |
16진수를 인쇄할 때 printf가 1바이트만 출력하지 않는 이유는 무엇입니까? (0) | 2023.07.19 |
변수가 정의되었는지 확인하시겠습니까? (0) | 2023.07.19 |