matplotlib 取消轴上的偏移[复制]

arknldoa  于 2023-05-07  发布在  其他
关注(0)|答案(2)|浏览(157)

此问题已在此处有答案

How can I change the x axis so there is no white space?(2个答案)
5年前关闭。
我在编辑我的作品时才注意到这种细微差别。
以前,matplotlib看起来像这样:

x=[1,2,3,4,5]
y=[4,5,5,2,1]
plot(x,y,'-')

但经过最近的升级我相信,有抵消,这将返回这样的

从我现在看到的情况来看,这有点不必要。我想知道
1.这种偏移是否是数据可视化的良好实践?如果是这样,我就不去管它了。
1.如何抵消这种抵消?
我可以手动恢复plt.gca().set_xlim([1, 5])的限制,但如果我有另外20个图,这将无法缩放。我在谷歌上搜索了一下,没有找到太多关于这方面的信息。

fxnxkyjh

fxnxkyjh1#

在matplotlib v2.0.x中,默认的轴边距已经从0更改为0.05,这是控制轴上数据周围空白的值。更多关于这一变化背后的原因,请参见此处。
有几种方法可以恢复到以前的行为。
1)要将单个Axes示例的margins重置为0,请执行以下操作:

plt.margins(0)

ax.margins(0)

2)要将脚本中的所有图的margins重置为0,请使用rcParams并在脚本的顶部设置:

plt.rcParams['axes.autolimit_mode'] = 'round_numbers'
plt.rcParams['axes.xmargin'] = 0.
plt.rcParams['axes.ymargin'] = 0.

3)要更改计算机上所有图的默认值,请修改matplotlibrc文件以包含以下行:

axes.autolimit_mode: round_numbers
axes.xmargin        : 0.
axes.ymargin        : 0.

请注意,要使用方法(1)并真正获得旧行为,您可能还需要设置plt.rcParams['axes.autolimit_mode'] = 'round_numbers'

4jb9z9bj

4jb9z9bj2#

猜猜它的好做法是否有点值得讨论。它以某种方式暗示你的图继续(但你只是显示它的一个窗口),所以如果你的图只定义在这个区域有一个偏移是有意义的。如果它实际上还在继续,但你只是绘制了这一部分,那么删除它是合乎逻辑的。
可扩展的方法是

plt.gca().set_xlim([np.min(x), np.max(x)])

相关问题