Deprecated: Array and string offset access syntax with curly braces is deprecated in /mnt/hep_web/hep_web/member/n-kota/dokuwiki/inc/init.php on line 542
ja:root:tgrapherrors [GiriWiki]

ユーザ用ツール

サイト用ツール


ja:root:tgrapherrors

TGraphErrors

TGraph の上位互換(TGraphを継承している)なので、基本的にこちらを使っておけばよい。


コンストラクタ

  TGraphErrors(Int_t n, const Float_t* x, const Float_t* y, const Float_t* ex = 0, const Float_t* ey = 0)
  TGraphErrors(Int_t n, const Double_t* x, const Double_t* y, const Double_t* ex = 0, const Double_t* ey = 0)
  TGraphErrors(const TVectorF& vx, const TVectorF& vy, const TVectorF& vex, const TVectorF& vey)
  TGraphErrors(const TVectorD& vx, const TVectorD& vy, const TVectorD& vex, const TVectorD& vey)
  TGraphErrors(const TGraphErrors& gr)
  TGraphErrors& operator=(const TGraphErrors& gr)
  TGraphErrors(const TH1* h)
  TGraphErrors(const char* filename, const char* format = "%lg %lg %lg %lg", Option_t* option = "")

など色々ある。
4つの変数は全て同じ型でないといけない(はず)。

使い方

例1

void example1()
{
  TCanvas *c = new TCanvas("c","c",600,600);
  c->cd();
  TH1F *frame = gPad->DrawFrame( 0. , 0. , 12. , 120. );
 
  const Int_t NPOINT = 5;
  Float_t X[NPOINT]  = { 1.  , 3.  , 5.  , 8.  , 10.  };
  Float_t Y[NPOINT]  = { 10. , 30. , 50. , 80. , 100. };
  Float_t eX[NPOINT] = { 0.1 , 0.3 , 0.5 , 0.8 , 1.   };
  Float_t eY[NPOINT] = { 1.  , 3.  , 5.  , 8.  , 10.   };
 
  TGraphErrors *g = new TGraphErrors(NPOINT,X,Y,eX,eY);
  g->SetMarkerStyle( 20 );
  g->SetMarkerSize( 1.0 );
  g->Draw("PC");
}

例2

例3

以下のようなデータファイル data.dat を用意する。

1.0     10.0    0.1     1.0
2.0     20.0    0.2     2.0
3.0     30.0    0.3     3.0
4.0     40.0    0.4     4.0
5.0     50.0    0.5     5.0
6.0     60.0    0.6     6.0
7.0     70.0    0.7     7.0
8.0     80.0    0.8     8.0
9.0     90.0    0.9     9.0
10.0    100.0   1.0     10.0
void example3()
{
  TCanvas *c = new TCanvas("c","c",600,600);
  c->cd();
  TH1F *frame = gPad->DrawFrame( 0. , 0. , 12. , 120. );
 
  TGraphErrors *g = new TGraphErrors("data.dat","%lg %lg %lg %lg","");
  g->SetMarkerStyle( 20 );
  g->SetMarkerSize( 1.0 );
  g->Draw("PC");
}

例4

例3と同じ data.dat を使って、

void example4()
{
  TCanvas *c = new TCanvas("c","c",600,600);
  c->cd();
  TH1F *frame = gPad->DrawFrame( 0. , 0. , 12. , 120. );
 
  const Int_t NPOINT = 10;
  ifstream fin("data.dat");
  Float_t X[NPOINT],Y[NPOINT],eX[NPOINT],eY[NPOINT];
  Int_t i = 0;
  while(!fin.eof()){
    fin >> X[i] >> Y[i] >> eX[i] >> eY[i];
    i++;
  }
 
  TGraphErrors *g = new TGraphErrors(NPOINT,X,Y,eX,eY);
  g->SetMarkerStyle( 20 );
  g->SetMarkerSize( 1.0 );
  g->Draw("PC");
}

のようにしても同じグラフが描ける

ja/root/tgrapherrors.txt · 最終更新: 2017/02/02 14:25 by kota