예제 #1
0
def get_angle_plot(line1,
                   line2,
                   offset=1,
                   color=None,
                   origin=(0, 0),
                   len_x_axis=1,
                   len_y_axis=1):

    l1xy = line1.get_xydata()

    # Angle between line1 and x-axis
    slope1 = (l1xy[1][1] - l1xy[0][1]) / float(l1xy[1][0] - l1xy[0][0])
    angle1 = abs(math.degrees(
        math.atan(slope1)))  # Taking only the positive angle

    l2xy = line2.get_xydata()

    # Angle between line2 and x-axis
    slope2 = (l2xy[1][1] - l2xy[0][1]) / float(l2xy[1][0] - l2xy[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(
        )  # Uses the color of line 1 if color parameter is not passed.

    angle_plot = Arc(origin,
                     len_x_axis * offset,
                     len_y_axis * offset,
                     0,
                     theta1,
                     theta2,
                     color=color,
                     label=str(angle) + u"\u00b0")
    angle = angle_plot.get_label()[:-1]  # Excluding the degree symbol
    angle_text = "%0.2f" % float(
        angle) + u"\u00b0"  # Display angle upto 2 decimal places

    return angle_plot, angle_text