TCanvas *c = new TCanvas("c","Fill Area colors",0,0,500,200); c.DrawColorTable();
TColorWheel *w = new TColorWheel(); w->Draw();
enum EColor { kWhite =0, kBlack =1, kGray=920, kRed =632, kGreen =416, kBlue=600, kYellow=400, kMagenta=616, kCyan=432, kOrange=800, kSpring=820, kTeal=840, kAzure =860, kViolet =880, kPink=900 };
のように各key wardが数字に対応している。
TMarker marker; marker.DisplayMarkerTypes();
TColor::CreateGradientColorTable(UInt_t Number, Double_t* Stops, Double_t* Red, Double_t* Green, Double_t* Blue, UInt_t NColors, Float_t alpha = 1.)
const Int_t NRGBs = 5; //色の区切りの数(区切り色 = RGB空間に打たれた点のさす色) const Int_t NCont = 255; //グラデーションの段数 //グラデーションの色を配列で指定 Double_t stops[NRGBs] = { 0.00, 0.34, 0.61, 0.84, 1.00 }; //stopはカラーバーでの位置(比率)。つまり、区切りの色がくる場所。 //Red、Green,Blueは各区切り位置でのR,G,Bの値(区切り色を指定) Double_t Red[NRGBs] = { 0.00, 0.00, 0.87, 1.00, 0.51 }; //RGBは一般的なRGBの値を255で割って規格化(?)している。 Double_t Green[NRGBs] = { 0.00, 0.81, 1.00, 0.20, 0.00 }; //縦に見る。カラーバーの位置0.00でのRGB=(0.00,0.00,0.51), Double_t Blue[NRGBs] = { 0.51, 1.00, 0.12, 0.00, 0.00 }; //位置0.34でのRGB=(0.00,0.81,1.00),のようになっている。 TColor::CreateGradientColorTable(NRGBs, stops, Red, Green, Blue, NCont);//グラデーションを作る。勝手にgStyle->SetPalette()してくれる gStyle->SetNumberContours(NCont); ////////// DRAW ////////// TH2D *h = new TH2D("h","h",200,-3,3,200,-3,3); for(Int_t i = 0 ; i < 5000000 ; i++) h->Fill(gRandom->Gaus(0.,1.) , gRandom->Gaus(0.,1.)); h->Draw("colz"); h->SetTitle(0); //左上のtitleが邪魔なので削除している gStyle->SetStatX(0.9); //stat box をずらしている
gROOT->GetColor(3)->SetRGB(0., 0.7, 0.); // Green gROOT->GetColor(5)->SetRGB(1., 0.5, 0.); // Yellow gROOT->GetColor(7)->SetRGB(0.6, 0.3, 0.6); // Cyan
h2->Draw("colz"); gPad->Update(); TPaletteAxis *palette = (TPaletteAxis*)h2->GetListOfFunctions()->FindObject("palette"); palette->SetY2NDC(0.7); //位置を変えたり、縮めたり
ラベルを消そうとして
palette->SetLabelSize(0); palette->SetLabelOffset(100);
などやってみたがうまくいかず。 代わりに
h2->SetLabelSize(0); h2->SetLabelOffset(100); h2->SetTickLength(0,"Z")
などはちゃんと動いた。
TColor はROOTのv5からv6に変わって、アップデートが多い所のように感じる。 用意されているパレットの中身については、TColorのsource (core/base/src/TColor.cxx)の TColor::SetPaletteの関数の中身を読んでみるとそのパラメータが書いてある。