Matplotlib的Axes有axhline
和axvline
函数,用于在Axes上独立于数据比例绘制给定y或x坐标(分别)的水平或垂直线。
是否有类似的函数可以绘制常数对角线?例如,如果我有一组具有相似域的变量的散点图,通常很有用知道它们是否在y = x
线的上方或下方:
mean, cov = [0, 0], [(1, .6), (.6, 1)]
x, y = np.random.multivariate_normal(mean, cov, 100).T
y += x + 1
f, ax = plt.subplots(figsize=(6, 6))
ax.scatter(x, y, c=".3")
ax.plot([-3, 3], [-3, 3], ls="--", c=".3")
ax.set(xlim=(-3, 3), ylim=(-3, 3))
当然,可以通过获取轴限制(ax.get_xlim()
等)来以编程方式实现,但是这需要额外的步骤,并且在更多数据可能出现在图中并移动限制的情况下很脆弱。(实际上,在某些情况下,仅添加常量线本身就会拉伸轴)。
最好的方法是只需执行ax.axdline(ls="--", c=".3")
之类的操作,但不清楚matplotlib代码库中是否存在此类内容。我认为,您只需要修改axhline
代码,以在axes坐标中将x
和y
都绘制为[0, 1]
。