"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Matplotlib 시각화에서 주석이 겹치는 것을 방지하려면 어떻게 해야 합니까?

Matplotlib 시각화에서 주석이 겹치는 것을 방지하려면 어떻게 해야 합니까?

2024-11-08에 게시됨
검색:685

How can I prevent overlapping annotations in Matplotlib visualizations?

Matplotlib의 주석 중복

Matplotlib 시각화에서는 종종 주석 중복 문제가 발생하여 그래프가 복잡해지고 해석하기 어려워집니다. 이 문서에서는 이 문제를 해결하기 위한 포괄적인 솔루션을 제공합니다.

Herausforderung

여러 주석이 동일한 화면 공간을 공유하여 시각적 혼란을 야기할 때 겹치는 주석이 발생합니다. 제공된 코드에서 데이터 포인트의 주석 텍스트는 특히 그래프의 밀도가 높은 영역에서 겹치는 경향이 있습니다.

Lösung

주석이 겹치는 것을 방지하기 위해 Phlya가 작성한 adjustText 라이브러리는 간단하고 효과적인 솔루션을 제공합니다. 이 라이브러리는 가독성을 유지하면서 중복을 최소화하기 위해 주석 위치를 자동으로 조정합니다.

adjustText 사용

다음 코드 조각은 제공된 예에서 adjustText를 사용하여 주석 배치를 최적화하는 방법을 보여줍니다.

import matplotlib.pyplot as plt
from adjustText import adjust_text

# ... (code to generate the data and plot remain the same as before) ...

plt.xlabel("Proportional Euclidean Distance")
plt.ylabel("Percentage Timewindows Attended")
plt.title("Test plot")

texts = [x for (x,y,z) in together]
eucs = [y for (x,y,z) in together]
covers = [z for (x,y,z) in together]

p1 = plt.plot(eucs,covers,color="black", alpha=0.5)
texts = []
for x, y, s in zip(eucs, covers, text):
    texts.append(plt.text(x, y, s))

adjust_text(texts, only_move={'points':'y', 'texts':'y'}, arrowprops=dict(arrowstyle="->", color='r', lw=0.5))
plt.show()

텍스트 배치 사용자 정의

adjustText는 주석 배치를 미세 조정할 수 있는 다양한 사용자 정의 옵션을 제공합니다. 예를 들어, 이동할 수 있는 요소(only_move 매개변수), 주석 정렬, 텍스트 개체 간의 반발 강도를 제어할 수 있습니다.

이러한 매개변수를 실험하면 다음과 같은 최적의 텍스트 배치를 얻을 수 있습니다. 주석이 겹치는 것에 대한 걱정 없이 Matplotlib 그래프의 명확성과 시각적 매력을 극대화합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3