import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(7, 5))
ax = fig.add_subplot(projection='3d')
Lx, Ly, r = 6, 6, 1.
x = np.arange(0., Lx - 0.001, 1./Ly)
theta = 2*np.pi* x - np.pi/6.
y = r * np.sin(theta)
z = r * np.cos(theta)
ax.plot(x, y, z, 'k-', label='neighbors')
ax.plot(x, y, z, 'bo', label='sites')
N = Lx*Ly //2
for j in range(Ly):
    j2 = j + (Lx-1)*Ly
    ax.plot([x[j], x[j2]], [y[j], y[j2]], [z[j], z[j2]], 'k-')
ax.plot(x[:N], y[:N], z[:N], 'r--', linewidth=3., label='MPS')
ax.legend()
ax.view_init(elev=30, azim=-77)  # adjust view-point