import matplotlib.pyplot as plt
import numpy as np
from skimage import transform

p0 = np.array([[3, 2],[3, 1],[4,1]])
a = 30
tf = transform.EuclideanTransform(rotation=np.deg2rad(a))
p1 = tf(p0)
t = np.linspace(np.arctan2(p0[1,1],p0[1,0]), np.arctan2(p1[1,1],p1[1,0]), 100)
r = np.linalg.norm(p0[1,:])

ax1 = plt.subplot(1, 1, 1)
plt.plot(p0[:,0], p0[:,1], 'ko-')
plt.plot(p1[:,0], p1[:,1], 'ro-')
plt.plot(r*np.cos(t), r*np.sin(t), 'k--')
plt.plot([0, p0[1,0]], [0, p0[1,1]], 'k:')
plt.plot([0, p1[1,0]], [0, p1[1,1]], 'k:')

ax1.annotate(r'$\alpha$', xy=(float(0.5 * p0[0,1] + 0.5 * p1[0,1]) - 0.15, float(0.5 * p0[1,1] + 0.5 * p1[1,1]) - 0.15))
ax1.annotate('p', xy=(float(p0[1,0] + 0.15), float(p0[1,1] + 0.15)))
ax1.annotate('p*', xy=(float(p1[1,0]), float(p1[1,1] + 0.15)))
plt.axis((0, 5, 0, 5))
ax1.set_aspect('equal')

plt.show()