使用python的matplotlib向散点图添加线

2024-04-26 07:36:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python的matplotlib,并希望创建一个带附加行的matplotlib.scatter()。线应该从左下角到右上角,与散射体内容无关。 像this post中那样,通过数据进行线性回归并不是我想要的。它也应该是动态的,独立于散射输入。

这应该是最后的情节:

enter image description here

编辑:

这样做给了我一个结果:

# Scatter Plot
x = data_calc_hourly.temp
y =  data_obs_hourly.temp

lineStart = data_calc_hourly.temp.min() 
lineEnd = data_calc_hourly.temp.max()  

plt.figure()
plt.scatter(x, y, color = 'k', alpha=0.5)
plt.plot([lineStart, lineEnd], [lineStart, lineEnd], 'k-', color = 'r')
plt.xlim(lineStart, lineEnd)
plt.ylim(lineStart, lineEnd)
plt.show()

有更好的办法吗?


Tags: 数据内容datamatplotlibcalcpltthispost
2条回答

这将绘制一条对角线,该对角线独立于散点图数据,并且即使调整窗口大小,也将保持根在轴上:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.lines as mlines
import matplotlib.transforms as mtransforms

x, y = np.random.random((2, 100))*2
fig, ax = plt.subplots()
ax.scatter(x, y, c='black')
line = mlines.Line2D([0, 1], [0, 1], color='red')
transform = ax.transAxes
line.set_transform(transform)
ax.add_line(line)
plt.show()

enter image description here

除了unutbu的答案之外,另一个选项是在绘制数据后获取轴的限制,并使用它们添加线。在此之后,您仍需要更改轴限制,因为它们将随着直线的添加而更改:

# Scatter Plot
x = data_calc_hourly.temp
y =  data_obs_hourly.temp

lineStart = data_calc_hourly.temp.min() 
lineEnd = data_calc_hourly.temp.max()  

plt.figure()
plt.scatter(x, y, color = 'k', alpha=0.5)
y_lim = plt.ylim()
x_lim = plt.xlim()
plt.plot(x_lim, y_lim, 'k-', color = 'r')
plt.ylim(y_lim)
plt.xlim(x_lim)
plt.show()

相关问题 更多 >