我一直试图使用ImageGrid
绘制一些面板。当我使用grid.cbar_axes[0].colorbar(im)
设置颜色条时,颜色看起来很好,但颜色条上的比例看起来就像从2x10^0
到None
。
我尝试了几十种解决方法,但没有任何效果。这是我想要制作的图(我的错误版本):
不幸的是,我无法制作完美再现问题的MWE。我确实生产了一种可以部分重现它的MWE。如果我使用此代码:
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import ImageGrid
from matplotlib.colors import LogNorm
def get_demo_image():
import numpy as np
from matplotlib.cbook import get_sample_data
f = get_sample_data("axes_grid/bivariate_normal.npy", asfileobj=False)
z = np.load(f)
return abs(z), (-3, 4, -4, 3)
F = plt.figure(figsize=(5.5, 3.5))
grid = ImageGrid(F, 111, # similar to subplot(111)
nrows_ncols=(1, 3),
axes_pad=0.1,
add_all=True,
label_mode="L",
cbar_mode='single'
)
Z, extent = get_demo_image() # demo image
im1 = Z
im2 = Z
im3 = Z
vmin, vmax = 1e-3, 1e10
for i, im in enumerate([im1, im2, im3]):
ax = grid[i]
imc = ax.pcolormesh(range(15), range(15), im, norm=LogNorm(vmin=vmin, vmax=vmax), linewidth=0, rasterized=True)
cb=grid.cbar_axes[0].colorbar(imc)
我得到几乎相同的行为,除了上限似乎没问题。无论我对vmin
和vmax
使用什么值,下限仍会出现相同的奇怪行为。
对可能发生的事情有所了解?
答案 0 :(得分:0)
虽然official example使用类似的东西
cb=grid.cbar_axes[0].colorbar(imc)
,这会将此处翻译为grid[2].cax.colorbar(im)
,我为什么会有意义而迷失。
相反,生成颜色条的常用方法也适用于此处,使用Figure
的colorbar方法和ScalarMappable(此处为imc
)作为参数
以及生成colorbar的轴作为cax
的关键字参数(此处为grid[2].cax
):
cb=F.colorbar(imc, cax=grid[2].cax)