Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python将线添加到散点图';s matplotlib_Python_Matplotlib - Fatal编程技术网

使用python将线添加到散点图';s matplotlib

使用python将线添加到散点图';s matplotlib,python,matplotlib,Python,Matplotlib,我正在使用python,希望创建一个带有附加行的matplotlib.scatter()。线条应从左下角延伸到右上角,与散射体内容无关。 通过数据的线性回归,如中所示,不是我想要的。它也应该是动态的,独立于散射输入 这应该是最终的绘图: 编辑: 这样做的结果是: # Scatter Plot x = data_calc_hourly.temp y = data_obs_hourly.temp lineStart = data_calc_hourly.temp.min() lineEnd

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

这应该是最终的绘图:

编辑:

这样做的结果是:

# 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()

有更好的方法吗?

这将绘制一条对角线,该对角线与散点图数据无关,即使调整窗口大小,它仍以轴为根:

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()

除了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()

你可以使用get_ylim()和get_xlim()得到轴的极限,然后计算你要找的线性函数的公式。我不想要线性函数,只想要一条独立直线线性函数是一条独立直线。这种方式只取决于matplotlib选择的轴。啊,好的,谢谢你,我会尝试一下我想要的!这不需要额外的mlines导入,只需使用绘图界面即可完成:
ax.plot([0,1],[0,1],color='red',transform=ax.transAxes)