2011-10-24 5 views
34

matplotlib을 사용하여 파이썬에서 일부 데이터를 플롯하기 위해 플롯에 표준 컬러 막대가 필요합니다. 데이터는 주파수 정보가 포함 된 일련의 NxM 행렬로 구성되어 간단한 imshow() 플롯에서 빈도를 설명하는 색상의 2D 막대 그래프를 제공합니다. 각 행렬은 서로 다르지만 중복되는 범위의 데이터를 포함합니다. Imshow는 각 행렬의 데이터를 0-1 범위로 정규화합니다. 즉, 행렬 A의 플롯은 행렬 2 * A의 플롯과 동일하게 나타납니다 (그러나 색상 막대는 값이 두 배로 표시됩니다). 제가 원했던 것은 예를 들어 빨강 색이 모든 플롯에서 동일한 빈도에 해당하는 것입니다. 다른 말로하면, 단일 플롯은 모든 플롯에서 충분합니다. 어떤 제안이라도 대단히 감사하겠습니다.파이썬에서 일련의 플롯에 대한 표준 컬러 막대를 만들려면 어떻게해야합니까?

+1

imshow()가 해석을 어렵게 표시 할 때 행렬을 부드럽게 만들기 때문에 matshow() 또는 pcolor()를 사용하는 것을 선호합니다. 행렬이 실제로 이미지가 아니라면 다른 두 가지를 시도해 보는 것이 좋습니다. – ianalis

+2

@inalis - 보간을 원하지 않으면'imshow'를 사용할 때'interpolation = 'nearest'를 지정할 수 있습니다. 'pcolor'는 큰 배열의 경우'imshow'보다 훨씬 느립니다. 그래서 큰 배열 배열을 위해'imshow'를 사용하는 것이 더 좋습니다. 반면에,'pcolor'는 벡터 출력을 주는데, 이것은 때때로 매우 편리 할 수 ​​있습니다. –

+0

[Matplotlib 2 Subplots, 1 Colorbar]의 가능한 복제물 (http://stackoverflow.com/questions/13784201/matplotlib-2-subplots-1-colorbar) –

답변

8

가장 쉬운 해결 방법은 각 플롯에 대해 동일한 인수를 사용하여 clim (lower_limit, upper_limit)을 호출하는 것입니다.

+4

또는'vmin' 및'vmax' kwargs를' imshow'. –

68

이 ianilis의 대답 @ 훔치는하지,하지만 난 예를 추가하고 싶었 ...

여러 가지 방법이 있지만, 가장 단순한는 imshowvminvmax kwargs로를 지정하는 것입니다. 또는 matplotlib.cm.Colormap 인스턴스를 만들고 지정할 수도 있지만 단순한 경우보다 복잡합니다.

여기에 모든 이미지에 대해 하나 년 Colorbar와 빠른 예제 :

import numpy as np 
import matplotlib.pyplot as plt 

# Generate some data that where each slice has a different range 
# (The overall range is from 0 to 2) 
data = np.random.random((4,10,10)) 
data *= np.array([0.5, 1.0, 1.5, 2.0])[:,None,None] 

# Plot each slice as an independent subplot 
fig, axes = plt.subplots(nrows=2, ncols=2) 
for dat, ax in zip(data, axes.flat): 
    # The vmin and vmax arguments specify the color limits 
    im = ax.imshow(dat, vmin=0, vmax=2) 

# Make an axis for the colorbar on the right side 
cax = fig.add_axes([0.9, 0.1, 0.03, 0.8]) 
fig.colorbar(im, cax=cax) 

plt.show() 

enter image description here

1

오히려이 유일한 해답의 질문의 절반, 또는 새로운 일을 시작합니다. 변경할 경우

data *= np.array([0.5, 1.0, 1.5, 2.0])[:,None,None] 

data *= np.array([2.0, 1.0, 1.5, 0.5])[:,None,None] 
당신의 년 Colorbar 어두운 파란색 약간 밝은 파란색이 경우 어떤 0에서 0.5로 이동합니다 전체 범위를 커버하지 않습니다

(0 2까지) . 컬러 바는 vminvmax에 관계없이 마지막 이미지 또는 윤곽선의 색상 만 표시합니다.

관련 문제