matplotlib是否有一个函数可以在坐标轴上绘制对角线?
- 论坛
- matplotlib是否有一个函数可以在坐标轴上绘制对角线?
21 浏览
matplotlib是否有一个函数可以在坐标轴上绘制对角线?
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
的代码,将x
和y
的坐标改为在坐标轴坐标中的[0, 1]
,我认为这样就可以了。