다음 코드를 사용하여 컬러 바와 함께 seaborn 히트 맵을 플로팅합니다. 히트 맵의 크기와 동일하게 컬러 바의 크기를 설정하고 싶습니다. 이것을 어떻게 달성 할 수 있습니까?
컬러 바를 사용하여 주소를 지정하려고 시도했지만 fig.colorbar(heatmap)
오류가 반환됩니다.
AttributeError: 'AxesSubplot' object has no attribute 'autoscale_None'
암호:
fig,ax=plt.subplots(figsize=(30,60))
cmap = plt.get_cmap('inferno',30)
cmap.set_under('white')#Colour values less than vmin in white
cmap.set_over('yellow')# colour valued larger than vmax in red
Crosstab=50000*np.random.randn(10,10)
heatmap=sns.heatmap(Crosstab[::-1],cmap=cmap,annot=False,square=True,ax=ax,vmin=1,vmax=50000,linewidths=0.8,linecolor="grey")
plt.show()
의견에서 말했듯이 Seaborn 버전 0.8 및 matplotlib 2.1.1을 사용하여이 문제를 재현 할 수 없으므로 가능하면 모듈 업데이트를 권장합니다.
즉,의 cbar_kws
인수를 사용하여 컬러 바의 크기를 조작 할 수 있습니다 seaborn.heatmap
. 이것은 (내부에서) kwargs로 matplotlibs에 전달되는 사전이어야합니다 fig.colorbar()
.
관심있는 하나의 kwarg는 shrink
매개 변수입니다. 이렇게하면 컬러 바의 크기가 줄어 듭니다.
축소 : 1.0; 컬러 바의 크기를 곱할 분수
기본값 은 1.0 이어야 하므로 수동으로 1로 설정해 볼 수 있습니다. 그러나 이것이 작동하지 않으면 더 낮은 값을 사용하여 컬러 바를 더 축소 할 수 있습니다. 컬러 바를 올바른 크기로 만들기 위해 약간의 땜질이 필요할 수 있습니다.
fig, ax = plt.subplots()
cmap = plt.get_cmap('inferno',30)
cmap.set_under('white')#Colour values less than vmin in white
cmap.set_over('yellow')# colour valued larger than vmax in red
Crosstab=50000*np.random.randn(10,10)
heatmap=sns.heatmap(Crosstab[::-1],cmap=cmap,annot=False,square=True,ax=ax,vmin=1,vmax=50000,
cbar_kws={"shrink": 0.5},linewidths=0.8,linecolor="grey")
plt.show()
기부:
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다