Matplotlib:如何以正确的方式删除彩条?
Matplotlib: How to remove a color bar the proper way?
我想从轴上删除颜色条,这样轴就会 return 回到默认位置。
为了清楚起见,请看一下这段代码(或更好的运行):
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
# Init figure
figure, axes = plt.subplots()
axes.set_aspect(1)
# Create some random stuff
image = axes.imshow(np.random.random((10, 10)))
plt.pause(2)
# Add a color bar to the axes
cax = make_axes_locatable(axes).append_axes("right", size="5%", pad=0.05)
colorBar = figure.colorbar(image, cax=cax)
colorBar.ax.tick_params(length=0, labelright=False)
plt.pause(2)
# Remove the color bar
colorBar.remove()
plt.show()
如您所见,发生了以下情况:在那一刻,我将颜色条添加到轴上,轴本身稍微改变了它的位置。它正在向左移动,为颜色条创建一些 space。在更复杂的情况下,例如在 Gridspec 中,它也可能会稍微改变它的大小。
我想要得到的:在那一刻我再次删除颜色条,我想让轴回到原来的位置(和它的原始大小)。
当我删除颜色条时,这不会自动发生。轴仍然在其左侧位置,而不是回到中心。
我该如何实现?
我需要类似 make_axes_locateable
的倒数。
非常感谢:)
make_axes_locatable
将轴定位器设置为新定位器。要反转此步骤,您需要跟踪旧定位器 (original_loc = ax.get_axes_locator()
) 并在移除颜色条后将其重置为轴 (ax.set_axes_locator(original_loc)
)。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
# Init figure
fig, ax = plt.subplots()
ax.set_aspect(1)
# Create some random stuff
image = ax.imshow(np.random.random((10, 10)))
plt.pause(2)
# Add a color bar to the axes
original_loc = ax.get_axes_locator()
cax = make_axes_locatable(ax).append_axes("right", size="5%", pad=0.05)
colorBar = fig.colorbar(image, cax=cax)
colorBar.ax.tick_params(length=0, labelright=False)
plt.pause(2)
# Remove the color bar
colorBar.remove()
ax.set_axes_locator(original_loc)
plt.pause(0.0001)
plt.show()
我想从轴上删除颜色条,这样轴就会 return 回到默认位置。
为了清楚起见,请看一下这段代码(或更好的运行):
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
# Init figure
figure, axes = plt.subplots()
axes.set_aspect(1)
# Create some random stuff
image = axes.imshow(np.random.random((10, 10)))
plt.pause(2)
# Add a color bar to the axes
cax = make_axes_locatable(axes).append_axes("right", size="5%", pad=0.05)
colorBar = figure.colorbar(image, cax=cax)
colorBar.ax.tick_params(length=0, labelright=False)
plt.pause(2)
# Remove the color bar
colorBar.remove()
plt.show()
如您所见,发生了以下情况:在那一刻,我将颜色条添加到轴上,轴本身稍微改变了它的位置。它正在向左移动,为颜色条创建一些 space。在更复杂的情况下,例如在 Gridspec 中,它也可能会稍微改变它的大小。
我想要得到的:在那一刻我再次删除颜色条,我想让轴回到原来的位置(和它的原始大小)。
当我删除颜色条时,这不会自动发生。轴仍然在其左侧位置,而不是回到中心。 我该如何实现?
我需要类似 make_axes_locateable
的倒数。
非常感谢:)
make_axes_locatable
将轴定位器设置为新定位器。要反转此步骤,您需要跟踪旧定位器 (original_loc = ax.get_axes_locator()
) 并在移除颜色条后将其重置为轴 (ax.set_axes_locator(original_loc)
)。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
# Init figure
fig, ax = plt.subplots()
ax.set_aspect(1)
# Create some random stuff
image = ax.imshow(np.random.random((10, 10)))
plt.pause(2)
# Add a color bar to the axes
original_loc = ax.get_axes_locator()
cax = make_axes_locatable(ax).append_axes("right", size="5%", pad=0.05)
colorBar = fig.colorbar(image, cax=cax)
colorBar.ax.tick_params(length=0, labelright=False)
plt.pause(2)
# Remove the color bar
colorBar.remove()
ax.set_axes_locator(original_loc)
plt.pause(0.0001)
plt.show()