2009/09/22

ROOTの2次元ヒストグラムのカラー指定

ROOTで2次元のヒストグラムをカラーで表示させたいときがある。
デフォルトだと色が連続しておらず、また美しくもない色使いなので、今までは、

gStyle->SetPalette(1);

として、さらにDrawのときに"surf1"オプションを指定していた。
だがSetPaletteで指定できるカラーは許容範囲とはいえ、まだ物足りない。

このカラーを自分で指定するには、CreateGradientColorTableを使う。
たとえば次のようにすればいい。

TF2 *f2 = new TF2("f2", "0.1+(1-(x-2)*(x-2))*(1-(y-2)*(y-2))", 1, 3, 1, 3);
const Int_t Number = 6;
Double_t Red[Number] = {0.00, 0.00, 0.75, 1.00, 1.00, 1.00};
Double_t Green[Number] = {0.00, 0.00, 0.00, 0.00, 1.00, 1.00};
Double_t Blue[Number] = {0.00, 0.75, 0.75, 0.00, 0.00, 1.00};
Double_t Stops[Number] = {0.00, 0.20, 0.40, 0.60, 0.80, 1.00};
Int_t nb = 50;
TColor::CreateGradientColorTable(Number, Stops, Red, Green, Blue, nb);
f2->SetContour(nb);
f2->Draw("surf1z");

CreateGradientColorTableでは、何段階のGradientを指定するか、段階の位置をどの位の割合で取るか、そのRGBのカラーの割合はどうするか、Gradientのカラー表示は何段階で表示するかを決めている。
これで好きなようにカラーの表示を決めることが出来る。