matplotlib是否有一个函数可以在坐标轴上绘制对角线?

21 浏览
0 Comments

matplotlib是否有一个函数可以在坐标轴上绘制对角线?

Matplotlib的Axes具有函数axhlineaxvline,用于在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))

enter image description here

当然,这可以通过编程方式完成,例如获取坐标轴限制(ax.get_xlim()等),但这需要额外的步骤,并且在更多数据可能出现在图中并改变限制的情况下容易出错。(实际上,在某些情况下,仅添加常数线本身就会拉伸坐标轴)。

最好的方法是只需执行ax.axdline(ls="--", c=".3"),但不清楚matplotlib代码库中是否存在类似的功能。你只需要修改axhline的代码,将xy的坐标改为在坐标轴坐标中的[0, 1],我认为这样就可以了。

0