ROOT で使われる色をプレゼンで見やすく変更しよう

ROOT では色の種類を番号で表します。ROOT で default で用意されており、通常よく使われるものは、1:黒 (K)、2:赤 (R)3:緑 (G)4:青 (B)5:黄色 (Y)6:マゼンタ (M)7:シアン (C) です。

しかしこれらの色のうち、プレゼン中で使うべきではない色に緑 (G) と黄色 (Y) とシアン (C) があります。背景色が白の場合、線の色が明るすぎて、会場の状況によっては聴衆から識別が困難なためです*1。ということで、このうち 2 色を少し見やすく変えてやりましょう。それぞれ深緑とオレンジにしちゃいます。シアンは他の良い代替案が思いつかないので、もう 7 色目を使うのは諦めましょう。

例えば以下の ROOT script で、color() と color_mod() を実行します。

void color()
{
  TLegend* leg = new TLegend(0.75, 0.15, 0.88, 0.6);

  TF1* f[7];
  for(int i = 0; i < 7; i++){
    f[i] = new TF1(Form("f%d", i), Form("x*x + %f", i*0.1), 0, 1);
    f[i]->SetLineColor(i + 1);
    f[i]->SetLineWidth(3);
    f[i]->Draw(i == 0 ? "" : "same");
    leg->AddEntry(f[i], Form("col = %d", i + 1), "l");
  } // i
  leg->SetFillStyle(0);
  leg->Draw();
}

void color_mod()
{
  gROOT->GetColor(3)->SetRGB(0., 0.7, 0.); // Green  (0, 1, 0)->(0, 0.7, 0)
  gROOT->GetColor(5)->SetRGB(1., 0.5, 0.); // Yellow (1, 1, 0)->(0, 0.5, 0)
  color();
}


▲ color() の出力結果


▲ color_mod() の出力結果

  gROOT->GetColor(3)->SetRGB(0., 0.7, 0.); // Green  (0, 1, 0)->(0, 0.7, 0)
  gROOT->GetColor(5)->SetRGB(1., 0.5, 0.); // Yellow (1, 1, 0)->(0, 0.5, 0)

この 2 行で、色番号 3 と 5 の TColor への pointer を取り出し、RGB の割合を再設定してやっています。この 2 行を ~/.rootlogon.C に追記すれば、いつでもこの設定で使用できます。

*1:多分、この blog 上でも読みづらいはずです。