(x,y,z)形式の3次元データを扱う†
TGraph2D†
TGraph2D *g = new TGraph2D("input.dat", "%*s %lg %lg %lg"); // 読み込みファイル指定。%*sで読み飛ばす行。
g->Draw("TRI"); // グラフの描画
double z = g->Interpolate(22,1.2); // ドロネー補間により、任意のx,y上のzを返す
int n = g->GetN(); // 読み込んだデータ点の数
Double_t *x = g->GetX(); // 読み込んだデータ点を変数 *x に代入
printf("%f\n",x[3]); // 読み込んだデータ点の3番目のxを返す
等高線プロットを作る†
TH2F / TH2D†
- x : 中性子数, y : 陽子数, z : E(2+) のような、不連続なデータを描きたいときはこっちを使う。
TH2F* h2 = new TH2F("h2","h2",51,-0.5,50.5,51,-0.5,50.5); // 51x51のキャンバスを作成
double x, y, z;
FILE *fp;
fp = fopen("adopted_be2.dat","r");
char line[1000];
while(fgets(line, 1000, fp)!= NULL){
int num = sscanf(line, "%lf %lf %lf %*s\n", &y, &x, &z);
if(num != 3) continue;
h2->Fill(x,y,z);
}
h2->Draw("colz");