如何通过线性回归绘制漂亮的散点图?

时间:2020-09-15 12:48:12

标签: python pandas matplotlib seaborn python-ggplot

我想使用下面给出的数据,用scatter plot行制作漂亮的linear regression。我能够创建散点图,但对它的外观不满意。另外,我想在数据上绘制一条linear regression线。

我的数据和代码如下:

x            y
117.00      111.0
107.00      110.0
77.22        78.0
112.00       95.4
149.00      150.0
121.00      121.0
121.61      120.0
111.54      140.0
73.00        72.0
70.47       000.0
66.3         72.0
113.00      131.0
81.00        81.0
72.00        00.0
74.20        98.0
84.24        90.0
86.60        88.0
99.00        97.0
90.00       102.0
85.00       000.0
138.0       135.0
96.00        93.0

import numpy as np
import matplotlib.pyplot as plt
print(plt.style.available)
from sklearn.linear_model import LinearRegression
plt.style.use('ggplot')

data = np.loadtxt('test_data',  dtype=float, skiprows=1,usecols=(0,1))

x=data[:,0]
y=data[:,1]
plt.xlim(20,200)
plt.ylim(20,200)

plt.scatter(x,y, marker="o",)
plt.show()

1 个答案:

答案 0 :(得分:2)

请检查代码段。您可以将numpy.polyfit()与度= 1一起使用来计算到y=m*x+c的直线的斜率和y截距 graph

import numpy as np
import matplotlib.pyplot as plt
plt.style.use('ggplot')
data = np.loadtxt('test_data.txt',  dtype=float, skiprows=1,usecols=(0,1))
x=data[:,0]
y=data[:,1]

plt.xlim(20,200)
plt.ylim(20,200)

plt.scatter(x,y, marker="o",)

m, b = np.polyfit(x, y, 1)
plt.plot(x, m*x + b)

plt.show()

编辑1: 根据您的评论,我添加了更多点,现在图形看起来像这样,并且似乎通过了点。

要设置点的透明度,可以使用alpha参数。您可以在0到1之间设置范围以更改透明度。在这里,我设置了alpha=0.5

plt.scatter(x,y, marker="o",alpha=0.5) transparent Edit2 :基于@tmdavison建议 graph2

import numpy as np
import matplotlib.pyplot as plt
plt.style.use('ggplot')
data = np.loadtxt('test_data.txt',  dtype=float, skiprows=1,usecols=(0,1))
x=data[:,0]
y=data[:,1]
x2 = np.arange(0, 200)
plt.xlim(20,200)
plt.ylim(20,200)

plt.scatter(x,y, marker="o",)

m, b = np.polyfit(x, y, 1)
plt.plot(x2, m*x2 + b)

plt.show()