2016-06-09 2 views
2

때로는 이산 값을 pcolormesh 스타일로 플롯하려고합니다.
enter image description hereMatplotlib을 사용하여 범례 스타일로 개별 색상 막대를 그릴 경우

년 Colorbar 어떻게 생성한다 :

예를 들어, 도면은 다음과 같이 표시 INT 0~7

data = np.random.randint(8, size=(100,100)) 
cmap = plt.cm.get_cmap('PiYG', 8) 
plt.pcolormesh(data,cmap = cmap,alpha = 0.75) 
plt.colorbar() 

을 함유하는 100 × 100의 형태로 2 차원 배열을 나타내는 전설적인 스타일. 다른 한마디로, 각 색상 상자의 값에 해당합니다 (예 : 핑크 colorbox -> 0)

여기

그림 (이 예에 적합하지) :

enter image description here

답변

3

아마 가장 쉬운 방법은 생성하는 것입니다 패치 인스턴스의 해당 번호 : 솔루션에 대한

import matplotlib.patches as mpatches 
import matplotlib.pyplot as plt 
import numpy as np 

data = np.random.randint(8, size=(100,100)) 
cmap = plt.cm.get_cmap('PiYG', 8) 
plt.pcolormesh(data,cmap = cmap,alpha = 0.75) 
# Set borders in the interval [0, 1] 
bound = np.linspace(0, 1, 9) 
# Preparing borders for the legend 
bound_prep = np.round(bound * 7, 2) 
# Creating 8 Patch instances 
plt.legend([mpatches.Patch(color=cmap(b)) for b in bound[:-1]], 
      ['{} - {}'.format(bound_prep[i], bound_prep[i+1] - 0.01) for i in range(8)]) 

enter image description here

+0

감사합니다! –

관련 문제