A1: потому что вы строите линию, и я подозреваю, что x не отсортирован.
A2.См. Вопрос 1.
A3: используйте следующее и посмотрите, как это работает (поскольку вы используете numpy):
x = np.array(x)
y = np.array(y)
plt.plot(x[x.argsort()], y[x.argsort()], label='Hello,World')
РЕДАКТИРОВАТЬ: если у вас много шума, вы можетепопробуйте построить меньше точек, например:
plt.plot(x[x.argsort()][::3], y[x.argsort()][::3], label='Hello,World') #each 3 points
или построить скользящее среднее (см. здесь )