복붙노트

[PYTHON] matplotlib의 오버레이 imshow 플롯

PYTHON

matplotlib의 오버레이 imshow 플롯

차이를 쉽게 볼 수 있도록 동일한 imshow 음모에 대해 서로 다른 두 세트의 데이터를 비교하고 싶습니다. 내 첫 번째 본능은 색상 맵의 색상을 투명하게 만드는 것입니다 (특히 낮은 값). 그러나이 작업을 수행 할 수 없었습니다.

from matplotlib.colors import colorConverter
import matplotlib.pyplot as plt
import numpy as np

# create dummy data
zvals =  np.random.rand(100,100)*10-5
zvals2 = np.random.rand(100,100)*10-5

# generate the transparent colors
color1 = colorConverter.to_rgba('white',alpha=0.0)
color2 = colorConverter.to_rgba('black',alpha=0.8)

# make the colormaps
cmap1 = mpl.colors.LinearSegmentedColormap.from_list('my_cmap',['green','blue'],256)
cmap2 = mpl.colors.LinearSegmentedColormap.from_list('my_cmap2',[color1,color2],256)

img2 = plt.imshow(zvals,interpolation='nearest',cmap=cmap1,origin='lower')
img3 = plt.imshow(zvals2,interpolation='nearest',cmap=cmap2,origin='lower')

plt.show()

오류는 없지만 두 번째 플롯의 흰색과 검은 색은 투명성을 나타내지 않습니다. 나는 또한 정상적인 plt.plot 상황에서 색상을 설정하기 위해 colorConverter 메소드를 시도하고 올바른 색상이 표시되었지만 색상도 투명하지 않게되었습니다.

imshow 플롯을 오버레이 / 비교하는 방법에 대한 추가 조언은 많은 도움이됩니다.

해결법

  1. ==============================

    1.imshow 명령에서 alpha 인수를 설정할 수 있습니다.

    imshow 명령에서 alpha 인수를 설정할 수 있습니다.

    귀하의 예제에서, img3 = plt.imshow (zvals2, interpolation = 'nearest', cmap = cmap2, origin = 'lower', alpha = 0.6)

    해명 해줘서 고마워. 다음은 할 수있는 일에 대한 설명입니다.

    다음은 코드를 사용하는 예제입니다.

    from matplotlib.colors import colorConverter
    import matplotlib.pyplot as plt
    import numpy as np
    import matplotlib as mpl
    
    # create dummy data
    zvals = np.ones((100,100))# np.random.rand(100,100)*10-5
    zvals2 = np.random.rand(100,100)*10-5
    
    # generate the colors for your colormap
    color1 = colorConverter.to_rgba('white')
    color2 = colorConverter.to_rgba('black')
    
    # make the colormaps
    cmap1 = mpl.colors.LinearSegmentedColormap.from_list('my_cmap',['green','blue'],256)
    cmap2 = mpl.colors.LinearSegmentedColormap.from_list('my_cmap2',[color1,color2],256)
    
    cmap2._init() # create the _lut array, with rgba values
    
    # create your alpha array and fill the colormap with them.
    # here it is progressive, but you can create whathever you want
    alphas = np.linspace(0, 0.8, cmap2.N+3)
    cmap2._lut[:,-1] = alphas
    
    img2 = plt.imshow(zvals, interpolation='nearest', cmap=cmap1, origin='lower')
    img3 = plt.imshow(zvals2, interpolation='nearest', cmap=cmap2, origin='lower')
    
    plt.show()
    

  2. from https://stackoverflow.com/questions/10127284/overlay-imshow-plots-in-matplotlib by cc-by-sa and MIT license