【发布时间】:2014-04-01 23:48:33
【问题描述】:
Matplotlib 轴具有 axhline 和 axvline 函数,用于在给定的 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() 等)以编程方式完成,但是 a) 需要一些额外的步骤,并且 b) 在更多数据可能最终出现在绘图上的情况下很脆弱并改变界限。 (实际上在某些情况下,只需添加常量线本身就会拉伸轴)。
最好只做,例如ax.axdline(ls="--", c=".3"),但不清楚 matplotlib 代码库中是否存在类似的东西。您需要做的就是修改axhline 代码,以便在x 和y 的轴 坐标中从[0, 1] 绘制,我想。
【问题讨论】:
-
见stackoverflow.com/a/14348481/6605826。我想这可能是你想要的。
-
Matplotlib 可能会在 3.3.0 中有这个:github.com/matplotlib/matplotlib/pull/15330
标签: python numpy matplotlib