x = [96, 63, 85, 66, 91, 89, 77]
m = np.mean(x)
plt.figure(figsize=(11,4))
plt.yticks([])
plt.xlim(60,100)
plt.ylim(-1,5)
plt.scatter(x, np.zeros_like(x), s=50,zorder=100)
plt.scatter(np.mean(x), [0], s=100, c="r",zorder=100)

for i in range(len(x)):
    plt.text(x[i]+.2,-0.4,"x{}".format(i+1),size=12)
    plt.text(x[i]+.2,-0.8,"={}".format(x[i]),size=12)

plt.text(m+.1,-0.4,"average",size=12)
plt.text(m+.1,-0.8,"={}".format(m),size=12)
plt.plot([0,100],[0,0],c="k",zorder=10)
plt.plot([0,100],[0,0],"k",zorder=10)

plt.plot([m,m],[-5,10],"k--",zorder=10)
for i, p, sd in zip(range(len(x)),[1.5, 4.5, 3, 4 ,2 ,2.5 ,3.5],[ 15, -18, 4, -15, 10, 8, -4]):
    plt.plot([x[i],x[i]],[-5,10],"k--",zorder=10)
    plt.plot([x[i],m],[p,p],"r",zorder=10)
    plt.text(x[i]+.1,p-.3,"{}".format(sd),size=12)
plt.show()