色見本を表示したい(TCanvas::DrawColorTable

1#include <TCanvas.h>
2
3// キャンバスを作成
4TCanvas *c = new TCanvas("c", "Color Table", 800, 600);
5
6// カラーテーブルを描画
7c->DrawColorTable();

TCanvas::DrawColorTableメソッドでROOTで利用可能なすべての色を視覚的に確認できます。 各色の色番号と色名を表示した見本表をキャンバスに描画します。

1from ROOT import TCanvas
2
3c = TCanvas("c", "Color Table", 800, 600)
4
5# カラーテーブルを描画
6c.DrawColorTable()

メソッドのシグネチャ

1void DrawColorTable()

引数と戻り値

引数:

  • なし

戻り値:

  • なし

使用例

カラーテーブルを表示したい

1#include <TCanvas.h>
2
3TCanvas *c = new TCanvas("c", "ROOT Color Table", 800, 600);
4
5// カラーテーブルを描画
6c->DrawColorTable();

ROOTで使用可能なすべての色を一覧で表示します。 各色には色番号が振られており、プログラムで色を指定する際に使用できます。

カラーテーブルを保存したい

 1#include <TCanvas.h>
 2
 3TCanvas *c = new TCanvas("c", "Color Table", 800, 600);
 4
 5c->DrawColorTable();
 6
 7// PNG形式で保存
 8c->SaveAs("color_table.png");
 9
10// PDF形式で保存
11c->SaveAs("color_table.pdf");

カラーテーブルを画像ファイルとして保存できます。

対話モードで表示したい

1root> TCanvas c
2root> c.DrawColorTable()

ROOT対話モードで実行する場合は、上記のように入力します。

ROOTの色について

色の種類

ROOTは以下の色を提供しています:

色番号

色名

説明

0

White

1

Black

2

Red

3

Green

4

Blue

5

Yellow

6

Magenta

マゼンタ

7

Cyan

シアン

8

Orange

オレンジ

9

Spring

スプリング

10

Teal

ティール

11+

その他

拡張色

プログラムで色を指定する

 1#include <TCanvas.h>
 2#include <TH1D.h>
 3
 4TCanvas *c = new TCanvas("c", "Using Colors", 800, 600);
 5
 6TH1D *h = new TH1D("h", "Histogram", 100, -5, 5);
 7h->FillRandom("gaus", 1000);
 8
 9// 色番号で指定(例:赤=2)
10h->SetLineColor(2);      // 線色を赤に
11h->SetFillColor(3);      // 塗りつぶし色を緑に
12h->SetMarkerColor(4);    // マーカー色を青に
13
14h->Draw();

色番号を使って、ヒストグラムやグラフの色を指定できます。

色の効果的な組み合わせ

 1#include <TCanvas.h>
 2#include <TH1D.h>
 3
 4TCanvas *c = new TCanvas("c", "Color Combinations", 1200, 400);
 5
 6c->Divide(3, 1);
 7
 8// パッド1:温色系
 9c->cd(1);
10TH1D *h1 = new TH1D("h1", "Warm Colors", 50, -5, 5);
11h1->FillRandom("gaus", 1000);
12h1->SetLineColor(2);     // 赤
13h1->SetFillColor(5);     // 黄
14h1->Draw();
15
16// パッド2:冷色系
17c->cd(2);
18TH1D *h2 = new TH1D("h2", "Cool Colors", 50, -5, 5);
19h2->FillRandom("gaus", 1000);
20h2->SetLineColor(4);     // 青
21h2->SetFillColor(7);     // シアン
22h2->Draw();
23
24// パッド3:対比効果
25c->cd(3);
26TH1D *h3 = new TH1D("h3", "Contrast", 50, -5, 5);
27h3->FillRandom("gaus", 1000);
28h3->SetLineColor(1);     // 黒
29h3->SetFillColor(5);     // 黄
30h3->Draw();

色の組み合わせで視覚的な効果を高めることができます。

カラーテーブルの活用

複数のデータを異なる色で表示

 1#include <TCanvas.h>
 2#include <TH1D.h>
 3
 4TCanvas *c = new TCanvas("c", "Multi-colored Histograms", 800, 600);
 5
 6// 複数のヒストグラムを異なる色で表示
 7TH1D *h1 = new TH1D("h1", "Data 1", 50, -5, 5);
 8h1->FillRandom("gaus", 5000);
 9h1->SetLineColor(2);     // 赤
10h1->Draw();
11
12TH1D *h2 = new TH1D("h2", "Data 2", 50, -5, 5);
13h2->FillRandom("gaus", 5000);
14h2->SetLineColor(4);     // 青
15h2->Draw("SAME");
16
17TH1D *h3 = new TH1D("h3", "Data 3", 50, -5, 5);
18h3->FillRandom("gaus", 5000);
19h3->SetLineColor(3);     // 緑
20h3->Draw("SAME");
21
22// 凡例を追加
23TLegend *leg = new TLegend(0.7, 0.7, 0.9, 0.9);
24leg->AddEntry(h1, "Data 1 (Red)", "l");
25leg->AddEntry(h2, "Data 2 (Blue)", "l");
26leg->AddEntry(h3, "Data 3 (Green)", "l");
27leg->Draw();

複数のデータセットを異なる色で視覚的に区別できます。

グリッドに色を適用

 1#include <TCanvas.h>
 2#include <TGraph.h>
 3
 4TCanvas *c = new TCanvas("c", "Colored Grid", 800, 600);
 5
 6TGraph *g = new TGraph();
 7
 8for (int i = 0; i < 50; i++) {
 9    double x = i * 0.2;
10    double y = sin(x);
11    g->SetPoint(i, x, y);
12}
13
14// グラフを青で描画
15g->SetLineColor(4);
16g->SetMarkerColor(4);
17g->SetMarkerStyle(20);
18g->Draw("APL");
19
20// グリッドラインを灰色で表示
21c->SetGridx();
22c->SetGridy();

グリッドに色を付けてグラフを見やすくできます。

色の選択ガイドライン

データ表示における色の使い分け

用途

推奨色

理由

メインデータ

2(赤)または4(青)

視認性が高い

比較データ1

3(緑)

赤との区別がしやすい

比較データ2

6(マゼンタ)

複数データの区別に有効

背景

0(白)または15(灰色)

コントラストが取りやすい

グリッド

13-18(淡色)

データを見やすくする

プレゼンテーション用色選択

1// 推奨:背景色を明るくしてコントラストを高める
2gStyle->SetCanvasColor(0);  // 白背景
3
4// 避けるべき:背景色が濃いと見えにくい
5// gStyle->SetCanvasColor(1);  // 黒背景

プレゼンテーション資料では背景色とのコントラストが重要です。

カラーテーブルの関連機能

カラーパレットの変更

1#include <TCanvas.h>
2#include <TStyle.h>
3
4// ROOTのカラーパレットを変更
5gStyle->SetPalette(1);  // カラーパレット1を設定
6
7// キャンバスを作成して描画
8TCanvas *c = new TCanvas("c", "Alternative Palette", 800, 600);
9c->DrawColorTable();

異なるカラーパレットを選択することで、さまざまな色配列が利用できます。

カスタムカラーの定義

 1#include <TCanvas.h>
 2#include <TROOT.h>
 3
 4TCanvas *c = new TCanvas("c", "Custom Colors", 800, 600);
 5
 6// カスタムカラーを定義(RGB値で指定)
 7Int_t customColor = TColor::GetColor(255, 128, 0);  // オレンジ
 8
 9// ヒストグラムにカスタムカラーを適用
10TH1D *h = new TH1D("h", "Custom Color", 100, -5, 5);
11h->FillRandom("gaus", 1000);
12h->SetLineColor(customColor);
13h->Draw();

RGB値を使ってカスタムカラーを定義し、より細かい色調整が可能です。

関連メソッド

参考資料