matplotlib:使用轴\网格1创建颜色栏时,将颜色栏缩短一半
我想把色条缩短一半。有人知道怎么做吗?我尝试了cax.get_position()和cax.set_position(),但这个方法不起作用 此外,由轴_grid1创建的轴似乎与原始轴具有相同的bbox位置。这是虫子吗 另外,我必须使用axes_grid1创建色条轴,因为我需要在之后使用tight_layout(),tight_layout()只适用于axes_grid1创建的轴,而不适用于add_axes()创建的轴matplotlib:使用轴\网格1创建颜色栏时,将颜色栏缩短一半,matplotlib,colorbar,Matplotlib,Colorbar,我想把色条缩短一半。有人知道怎么做吗?我尝试了cax.get_position()和cax.set_position(),但这个方法不起作用 此外,由轴_grid1创建的轴似乎与原始轴具有相同的bbox位置。这是虫子吗 另外,我必须使用axes_grid1创建色条轴,因为我需要在之后使用tight_layout(),tight_layout()只适用于axes_grid1创建的轴,而不适用于add_axes()创建的轴 轴分割器的整个点是分割轴,为新轴留出空间。这可确保所有轴具有相同的包围盒。这
轴分割器的整个点是分割轴,为新轴留出空间。这可确保所有轴具有相同的包围盒。这就是你看到正在打印的盒子 在图中的特定位置创建颜色条的一些常用方法如所示。这里的问题似乎是能够调用
紧密布局
。这可以通过以下两个选项实现。(可能还有其他人。)
A.使用gridspec
我不太确定这里的确切要求,但是使用普通的网格布局似乎更符合您的需要
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
fig = plt.figure()
gs = gridspec.GridSpec(2, 2, width_ratios=[95,5],)
ax = fig.add_subplot(gs[:, 0])
im = ax.imshow(np.arange(100).reshape((10,10)))
cax = fig.add_subplot(gs[1, 1])
fig.colorbar(im, cax=cax, ax=ax)
plt.tight_layout()
plt.show()
B.使用轴\u网格1
如果您真的需要使用轴\u网格1
,它可能会变得有点复杂
import matplotlib.pyplot as plt
import matplotlib.axes
from mpl_toolkits.axes_grid1 import make_axes_locatable, Size
import numpy as np
fig, ax = plt.subplots()
im = ax.imshow(np.arange(100).reshape((10,10)))
divider = make_axes_locatable(ax)
pad = 0.03
pad_size = Size.Fraction(pad, Size.AxesY(ax))
xsize = Size.Fraction(0.05, Size.AxesX(ax))
ysize = Size.Fraction(0.5-pad/2., Size.AxesY(ax))
divider.set_horizontal([Size.AxesX(ax), pad_size, xsize])
divider.set_vertical([ysize, pad_size, ysize])
ax.set_axes_locator(divider.new_locator(0, 0, ny1=-1))
cax = matplotlib.axes.Axes(ax.get_figure(),
ax.get_position(original=True))
locator = divider.new_locator(nx=2, ny=0)
cax.set_axes_locator(locator)
fig.add_axes(cax)
fig.colorbar(im, cax=cax)
plt.tight_layout()
plt.show()
轴分割器的整个点是分割轴,为新轴留出空间。这可确保所有轴具有相同的包围盒。这就是你看到正在打印的盒子 在图中的特定位置创建颜色条的一些常用方法如所示。这里的问题似乎是能够调用
紧密布局
。这可以通过以下两个选项实现。(可能还有其他人。)
A.使用gridspec
我不太确定这里的确切要求,但是使用普通的网格布局似乎更符合您的需要
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
fig = plt.figure()
gs = gridspec.GridSpec(2, 2, width_ratios=[95,5],)
ax = fig.add_subplot(gs[:, 0])
im = ax.imshow(np.arange(100).reshape((10,10)))
cax = fig.add_subplot(gs[1, 1])
fig.colorbar(im, cax=cax, ax=ax)
plt.tight_layout()
plt.show()
B.使用轴\u网格1
如果您真的需要使用轴\u网格1
,它可能会变得有点复杂
import matplotlib.pyplot as plt
import matplotlib.axes
from mpl_toolkits.axes_grid1 import make_axes_locatable, Size
import numpy as np
fig, ax = plt.subplots()
im = ax.imshow(np.arange(100).reshape((10,10)))
divider = make_axes_locatable(ax)
pad = 0.03
pad_size = Size.Fraction(pad, Size.AxesY(ax))
xsize = Size.Fraction(0.05, Size.AxesX(ax))
ysize = Size.Fraction(0.5-pad/2., Size.AxesY(ax))
divider.set_horizontal([Size.AxesX(ax), pad_size, xsize])
divider.set_vertical([ysize, pad_size, ysize])
ax.set_axes_locator(divider.new_locator(0, 0, ny1=-1))
cax = matplotlib.axes.Axes(ax.get_figure(),
ax.get_position(original=True))
locator = divider.new_locator(nx=2, ny=0)
cax.set_axes_locator(locator)
fig.add_axes(cax)
fig.colorbar(im, cax=cax)
plt.tight_layout()
plt.show()