2017-09-19 1 views
0

나는 ImageGrid을 사용하여 일부 패널을 플롯하려했습니다. grid.cbar_axes[0].colorbar(im)을 사용하여 색상 막대를 설정하면 색상이 잘 보이지만 색상 막대의 눈금은 2x10^0에서 None으로 변경됩니다.LogNorm 및 ImageGrid가 사용될 때 Matplotlib 색상 막대

수십 개의 해결 방법을 시도했지만 아무 효과가 없습니다.

enter image description here

불행하게도 내가 완벽하게 문제를 재현 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) 

enter image description here

을 나는 상한 괜찮을 것 같습니다 것을 제외하고, 거의 같은 동작을 얻을. 낮은 한도는 여전히 vminvmax에 어떤 값을 사용하든 동일한 이상한 동작을 나타냅니다.

어떤 일이 벌어지고 있는지 알기 원하십니까? official examplegrid[2].cax.colorbar(im)로 여기 번역 할 cb=grid.cbar_axes[0].colorbar(imc) 비슷한을 사용하지만

답변

0

는, 그조차 이해 이유에 잃었어요.

대신,도 (여기 grid[2].cax) cax에 keywordargument로 년 Colorbar을 생산하기 위해 인수 로 (여기 imc)을 ScalarMappable과 축과 Figure의 년 Colorbar 방법을 사용하여, 여기서 일 것 년 Colorbar을 생산하는 일반적인 방법 :

cb=F.colorbar(imc, cax=grid[2].cax) 

enter image description here

관련 문제