【问题标题】:Matplotlib: How to remove a color bar the proper way?Matplotlib:如何以正确的方式删除颜色条?
【发布时间】:2019-08-07 21:30:13
【问题描述】:

我想从坐标区中删除一个颜色条,以使坐标区返回其默认位置。

为了清楚起见,看看这段代码(或更好地运行它):

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()

如您所见,发生了以下情况:在我将颜色条添加到坐标区的那一刻,坐标区本身的位置发生了一点变化。它向左移动以为彩条创造一些空间。在更复杂的情况下,例如在 Gridspec 中,它也可能会稍微改变它的大小。

我想得到什么:在那一刻我再次移除颜色条,我想让轴恢复到原来的位置(和原来的大小)。

当我移除彩条时,这不会自动发生。轴仍然在其左侧位置,而不是回到中心。 我如何做到这一点?

我需要类似 make_axes_locateable 的倒数。

非常感谢:)

【问题讨论】:

  • 这对我来说就像一个XY problem。也许你可以告诉我们更多关于你试图通过这个复杂的设置实现的目标。也许更好的主意是首先防止颜色条调整轴的大小?
  • 是的,我有一个复杂的案例,Gridspec (2x4) 中有许多轴。他们中的一些人会得到一个颜色条,其他人不会。我需要更改具有颜色条的轴的大小,以便轴+颜色条具有与没有颜色条的轴相同的大小。后来,我再次删除了一些彩条,我希望轴恢复到原来的大小和位置。这不会发生。

标签: python matplotlib axes colorbar divider


【解决方案1】:

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()

【讨论】:

    猜你喜欢
    • 2018-03-31
    • 2015-02-24
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 2019-02-07
    • 1970-01-01
    相关资源
    最近更新 更多