MatplotlibでScientific notationを使った時のcolorbarの上の部分の文字をカスタマイズ

Matplotlibの目盛操作はFormatterを使ってカスタマイズできます。中でもScalarFormatterというものにはscientific notationという機能があります。これはa x 10bという表記だと目盛にはaを表示させて10bは端の方に書いておくというものです。言葉で説明すると面倒くさいので図を出します。

f:id:ignisan:20140529021821p:plain

デフォルトで勝手にそうなってるかもしれませんが、これはScalarFormatterのset_scientificでON/OFFを切り替えられます。 例えば上の図を出したソースはこれです。、

import numpy as np
import pylab as pl

x = np.linspace(0,1)
y = np.linspace(0,2)
x,y = np.meshgrid(x,y)
z = 1e-8*(x**2 + y**2)

pl.contourf(x,y,z)
cbar = pl.colorbar()
cbar.ax.tick_params(labelsize=12)
cbar.formatter.set_scientific(True)
pl.show()

上で出した図中の青い枠線で囲った1e-8という文字を大きくしたり、カスタマイズしたいのです。次のように修正することで変更可能です。

import numpy as np
import pylab as pl

x = np.linspace(0,1)
y = np.linspace(0,2)
x,y = np.meshgrid(x,y)
z = 1e-8*(x**2 + y**2)

pl.contourf(x,y,z)
cbar = pl.colorbar()
cbar.ax.tick_params(labelsize=12)
cbar.formatter.set_scientific(True)
text = cbar.ax.yaxis.get_offset_text() # offset_textが操作対象
text.set_fontsize(28)
text.set_color("blue")
pl.show()

f:id:ignisan:20140529022708p:plain

こういうの名前がわからないので調べにくい。