Я новичок в Python и MatPlotlib. Это мое первое сообщение для Stackoverflow - я не смог найти ответ в другом месте и был бы благодарен за вашу помощь.Пунктирный стиль линии из неравномерно распределенных данных
Я использую Windows XP с Enthought Canopy v1.1.1 (32 бит).
Я хочу построить линию линейной регрессии в точках в виде графика рассеяния данных, где массивы x и y содержат случайные данные с плавающей запятой.
Точки в полученной пунктирной линии равномерно распределены вдоль линии регрессии и «размазаны вместе» в середине красной линии, что делает ее беспорядочной (см. Верхний график, полученный из прилагаемого минимального примера кода).
Это не происходит, если элементы массива значений x равномерно распределены (нижний график).
Я предполагаю, что это проблема с тем, как MatplotLib отображает пунктирные линии или как Canopy взаимодействует с Python с Matplotlib.
Пожалуйста, не могли бы вы рассказать мне обходное решение, которое сделает точки пунктирной линии равномерно распределенными; даже если данные x и y распределены неравномерно; в то время как все еще используют Canopy и Matplotlib?
(Как правило, я всегда стараюсь улучшить свои навыки кодирования - если какой-либо код в моем примере может быть написан более аккуратно или лаконично, я был бы благодарен за ваш опыт).
Большое спасибо в ожидании
Dave (Великобритания)
import matplotlib.pyplot as plt
import numpy as np
from scipy import stats
#generate data
x1=10 * np.random.random_sample((40))
x2=np.linspace(0,10,40)
y=5 * np.random.random_sample((40))
slope, intercept, r_value, p_value, std_err = stats.linregress(x1,y)
line = (slope*x1)+intercept
plt.figure(1)
plt.subplot(211)
plt.scatter(x1,y,color='blue', marker='o')
plt.plot(x1,line,'r:',label="Regression Line")
plt.legend(loc='upper right')
slope, intercept, r_value, p_value, std_err = stats.linregress(x2,y)
line = (slope*x2)+intercept
plt.subplot(212)
plt.scatter(x2,y,color='blue', marker='o')
plt.plot(x2,line,'r:',label="Regression Line")
plt.legend(loc='upper right')
plt.show()