반응형
matplotlib : 컬러 바 및 해당 텍스트 레이블
레이블이 각 개별 색상의 중앙에 있도록에 colorbar
대한 범례 를 만들고 싶습니다 heatmap
. 여기에서 빌린 예 :
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import ListedColormap
#discrete color scheme
cMap = ListedColormap(['white', 'green', 'blue','red'])
#data
np.random.seed(42)
data = np.random.rand(4, 4)
fig, ax = plt.subplots()
heatmap = ax.pcolor(data, cmap=cMap)
#legend
cbar = plt.colorbar(heatmap)
cbar.ax.set_yticklabels(['0','1','2','>3'])
cbar.set_label('# of contacts', rotation=270)
# put the major ticks at the middle of each cell
ax.set_xticks(np.arange(data.shape[1]) + 0.5, minor=False)
ax.set_yticks(np.arange(data.shape[0]) + 0.5, minor=False)
ax.invert_yaxis()
#labels
column_labels = list('ABCD')
row_labels = list('WXYZ')
ax.set_xticklabels(column_labels, minor=False)
ax.set_yticklabels(row_labels, minor=False)
plt.show()
그러면 다음 플롯이 생성됩니다.
이상적으로는 네 가지 색상과 각 색상에 대해 중앙에 레이블이있는 범례 막대를 생성하고 싶습니다 0,1,2,>3
. 이것이 어떻게 달성 될 수 있습니까?
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import ListedColormap
#discrete color scheme
cMap = ListedColormap(['white', 'green', 'blue','red'])
#data
np.random.seed(42)
data = np.random.rand(4, 4)
fig, ax = plt.subplots()
heatmap = ax.pcolor(data, cmap=cMap)
#legend
cbar = plt.colorbar(heatmap)
cbar.ax.get_yaxis().set_ticks([])
for j, lab in enumerate(['$0$','$1$','$2$','$>3$']):
cbar.ax.text(.5, (2 * j + 1) / 8.0, lab, ha='center', va='center')
cbar.ax.get_yaxis().labelpad = 15
cbar.ax.set_ylabel('# of contacts', rotation=270)
# put the major ticks at the middle of each cell
ax.set_xticks(np.arange(data.shape[1]) + 0.5, minor=False)
ax.set_yticks(np.arange(data.shape[0]) + 0.5, minor=False)
ax.invert_yaxis()
#labels
column_labels = list('ABCD')
row_labels = list('WXYZ')
ax.set_xticklabels(column_labels, minor=False)
ax.set_yticklabels(row_labels, minor=False)
plt.show()
당신은 아주 가까웠습니다. 색상 막대 축에 대한 참조가 있으면 텍스트 레이블을 가운데에 배치하는 등 원하는대로 할 수 있습니다. 더 잘 보이게하기 위해 서식을 사용하고 싶을 수 있습니다.
에 추가하려면 tacaswell의 대답 의 colorbar()
기능은 선택이 cax
당신이 년 Colorbar이 그려 져야하는 축을 통과하는 데 사용할 수있는 입력. 해당 입력을 사용하는 경우 해당 축을 사용하여 레이블을 직접 설정할 수 있습니다.
import matplotlib.pyplot as plt
from mpl_toolkits.axes.grid1 import make_axes_locatable
fig, ax = plt.subplots()
heatmap = ax.imshow(data)
divider = make_axes_locatable(ax)
cax = divider.append_axes('bottom', size='10%', pad=0.6)
cb = fig.colorbar(heatmap, cax=cax, orientation='horizontal')
cax.set_xlabel('data label') # cax == cb.ax
참고 URL : https://stackoverflow.com/questions/15908371/matplotlib-colorbars-and-its-text-labels
반응형
'IT박스' 카테고리의 다른 글
Eclipse : 각 프로젝트에 대한 작업 공간을 만들어야합니까? (0) | 2020.10.15 |
---|---|
메소드 매개 변수 대신 해시 전달 (0) | 2020.10.15 |
엔티티 / 비즈니스 객체에 대한 종속성을 해결하기 위해 IoC 컨테이너를 사용하지 않는 이유는 무엇입니까? (0) | 2020.10.15 |
Linux에서 Windows 대상으로의 교차 컴파일을 위해 Qt를 구성하려면 어떻게해야합니까? (0) | 2020.10.15 |
내부에서 약속을 거부하고 기능하는 방법 (0) | 2020.10.15 |