Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Matplotlib에서 두 선 사이의 각도를 그리는 가장 좋은 방법

<시간/>

Matplotlib에서 두 선 사이의 각도를 그리는 가장 좋은 방법은 를 사용하는 것입니다. 사이의 각도를 표시하기 위해 각도 호를 만드는 클래스입니다.

단계

  • 그림 크기를 설정하고 서브플롯 사이 및 주변 여백을 조정합니다.
  • Figure()를 사용하여 새 Figure 생성 또는 기존 Figure 활성화 방법.
  • '~.axes.Axes' 추가 add_subplot()을 사용하여 서브플롯 배열의 일부로 그림에 방법.
  • 2D 라인 인스턴스를 l1으로 생성 및 l2 .
  • 현재 축에 선을 추가합니다.
  • 각도를 그리려면 타원형 호를 반환하는 사용자 정의 메서드를 호출하십시오. 선의 기울기를 사용하여 호 길이를 만들 수 있습니다.
  • 아티스트 추가(예:) add_patch() 사용 방법.
  • 그림을 표시하려면 show()를 사용하세요. 방법.

예시

from matplotlib import pyplot as plt, patches
import math

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

def angle_plot(line1, line2, offset=1.0, color=None, origin=(0, 0),
len_x_axis=1, len_y_axis=1):
   xy1 = line1.get_xydata()
   xy2 = line2.get_xydata()
   slope1 = (xy1[1][1] - xy1[0][1]) / float(xy1[1][0] - xy1[0][0])
   angle1 = abs(math.degrees(math.atan(slope1)))
   slope2 = (xy2[1][1] - xy2[0][1]) / float(xy2[1][0] - xy2[0][0])
   angle2 = abs(math.degrees(math.atan(slope2)))
   theta1 = min(angle1, angle2)
   theta2 = max(angle1, angle2)
   angle = theta2 - theta1
   if color is None:
      color = line1.get_color()

   return patches.Arc(origin, len_x_axis * offset, len_y_axis * offset, 0, theta1, theta2, color=color, label=str(angle) + u"\u00b0")

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

l1 = plt.Line2D([0, 1], [0, 4], linewidth=1, linestyle="-", color="green")
l2 = plt.Line2D([0, 4.5], [0, 3], linewidth=1, linestyle="-", color="red")

ax.add_line(l1)
ax.add_line(l2)

angle = angle_plot(l1, l2, 0.25)
ax.add_patch(angle)

plt.show()

출력

Matplotlib에서 두 선 사이의 각도를 그리는 가장 좋은 방법