Matplotlib:取消matplotlib 2.0中引入的轴的偏移量

cqc*_*991 3 python data-visualization matplotlib

我在编辑作品时注意到了这种细微差别.

以前,matplotlib看起来像这样:

x=[1,2,3,4,5]
y=[4,5,5,2,1]
plot(x,y,'-')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是在最近的升级之后我相信,有偏差,这将会像这样回归

在此输入图像描述

这与我现在看到的有点不相干.我想知道

  1. 如果这种偏移是数据可视化的一个很好的实践?如果是这样,我会保持原样.

  2. 如何取消这个偏移量?

我可以手动恢复限制plt.gca().set_xlim([1, 5]),但如果我有另外20个图,则无法扩展.我用Google搜索并没有找到太多关于此的信息.

tmd*_*son 5

在matplotlib v2.0.x中,默认轴边距已更改,从0到0.05,这是控制轴上数据周围空白的值.有关此更改背后的原因,请参阅此处.

有几种方法可以恢复到以前的行为.

1)要margins为单个Axes实例重置为0:

plt.margins(0)
Run Code Online (Sandbox Code Playgroud)

要么

ax.margins(0)
Run Code Online (Sandbox Code Playgroud)

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

plt.rcParams['axes.autolimit_mode'] = 'round_numbers'
plt.rcParams['axes.xmargin'] = 0.
plt.rcParams['axes.ymargin'] = 0.
Run Code Online (Sandbox Code Playgroud)

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

axes.autolimit_mode: round_numbers
axes.xmargin        : 0.
axes.ymargin        : 0.
Run Code Online (Sandbox Code Playgroud)

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