在使用python matplotlib和Axes3D繪製曲面時,改變facecolors的顯示範圍使其表示真實值。

wolfox1994發表於2020-10-22

facecolors是surface命令中用來改變顏色的元件,可以將指定變數作為表示為對應的顏色。但是這個元件預設colorbar的顯示範圍為0~1,且其處理範圍為0~1。一般來說,會將顏色變數歸一化使其值落到[0,1]中。但本研究要求顏色表示真實值,因此歸一化的方法不適用。所以採用如下方法:

  1. 根據資料範圍將原始資料除以相應的係數,使資料處於[0, 1]中。該係數一般是取資料中最大值相鄰的整數或一位小數。
  2. 用format函式改變colorbar的ticks,即將其乘以上一步的係數。

def fmt(x,pos):    # 改變顯示範圍,由0~1擴充套件
   
x=round(x, 2)
   
return r'${}$'.format(x*1.2)
cb=plt.colorbar(surf
, shrink=0.5, aspect=10, pad=0.1, format=ticker.FuncFormatter(fmt))

相關文章