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