我正在使用python' matplotlib并希望创建一个带有额外行的matplotlib.scatter()
。该行应从左下角到右上角,与散点内容无关。
数据的线性回归,如this post,并不是我想要的。它也应该动态地独立于分散输入。
这应该是最终的情节:
修改
这样做了我的结果:
# 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()
还有更好的方法吗?
答案 0 :(得分:9)
这会绘制一条对角线,该对角线与散点图数据无关,即使调整窗口大小,也会保持与轴的对齐:
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()
答案 1 :(得分:0)
除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()
答案 2 :(得分:0)
我尝试更新 X 轴和 Y 轴具有不同最大值和最小值数据的情况下的最小值和最大值限制。
x = data_calc_hourly.temp
y = data_obs_hourly.temp
calc_min = data_calc_hourly.temp.min()
calc_max = data_calc_hourly.temp.max()
obs_min = data_obs_hourly.temp.min()
obs_max = data_obs_hourly.temp.max()
lineStart = min(calc_min,obs_min)
lineEnd = max(calc_max,obs_max)
plt.figure()
plt.scatter(x, y, color = 'k', alpha=0.5)
plt.plot([lineStart, lineEnd], [lineStart, lineEnd], color = 'r')
plt.xlim(lineStart, lineEnd)
plt.ylim(lineStart, lineEnd)
plt.show()