1

我有一个代码,它使用 matplotlib(python win32 v2.7.5)来绘制带有动画或轮廓更新的彩条的轮廓图。为了更新绘图,我删除了颜色条轴,同时保持原始绘图轴不变。在 matplotlib 的 1.1.1 版本中,该程序运行正常,但是,当我升级到 matplotlib 的 1.2.1 时,我开始注意到我的绘图被颜色条向左挤压,如附图所示。

在 V1.1.1 中,经过多次迭代后,绘图如下所示: 使用 V1.1.1 的等高线图

而在 V1.2.1 中,情节现在看起来像这样: 使用 V1.2.1 的等高线图

如图所示,即使我使用的是 subplots_adjust,主要情节也会被推到左边。

上述地块的代码如下:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.mlab import bivariate_normal
from matplotlib.colors import LogNorm

delta = 0.5
x = np.arange(-3.0, 4.001, delta)
y = np.arange(-4.0, 3.001, delta)
X, Y = np.meshgrid(x, y)
Z = bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
fig  = plt.figure()
fig.subplots_adjust(left=0.1, bottom=0.1, right=0.97, top=0.92)
ax   = fig.add_subplot(1,1,1)
axim = ax.imshow(Z,norm = LogNorm())
cb   = fig.colorbar(axim)

#Note:  These are not replicated, I put them here to show how a refresh of the 
#       contour plot multiple times will look like
fig.delaxes(fig.axes[1])
fig.subplots_adjust(left=0.1, bottom=0.1, right=0.97, top=0.92)
cb   = fig.colorbar(axim)

fig.delaxes(fig.axes[1])
fig.subplots_adjust(left=0.1, bottom=0.1, right=0.97, top=0.92)
cb   = fig.colorbar(axim)

plt.show()

如果我每次都删除所有轴并重新创建它们,那么即使在新版本中它看起来也不错,但我认为这不是动画的有效过程。

任何想法为什么在 1.2.1 中发生了变化来做出这种行为?或任何其他建议使其再次工作?

4

1 回答 1

1

在 matplotlib 1.4中,这个拉取请求被合并,向颜色条添加了一个remove()方法。如果需要,此方法将删除颜色条并恢复 gridspec。意味着调用subplots_adjust将按预期工作。

如果您坚持使用旧版本的 matplotlib(就像我现在一样),请查看拉取请求中 colorbar.py 的更改,您应该能够让它工作。

于 2015-04-23T15:42:10.037 回答