0

我正在尝试编写一个从具有 4 列的 ASCII 文件中读取数据的小宏。但我只想将第二列和第三列绘制为(x,y)。

4

3 回答 3

5

的构造函数TGraph可以直接取一个CSV文件,见文档

TGraph g("data.csv", "%*lg %lg %lg %*lg", ",");

第一个参数是文件名,第二个参数是格式字符串。跳过的列用*; 要跳过最后一列,您实际上可以从格式字符串中省略它,

%*lg %lg %lg

第三个参数是列分隔符,可能,适合您的 CSV 风格。

于 2015-05-29T09:43:40.443 回答
0

遵循以下示例:https ://root.cern.ch/root/html534/tutorials/tree/basic.C.html而不是填充直方图制作图表。

于 2015-05-27T11:00:20.443 回答
0

您可以使用如上所示的“CSV 构造器”或简单地生成一个空的 TGraph(或 TGraphErrors),循环遍历您的 CSV 文件并添加点。第一行/标题中给出了一些恒定误差线的示例:

    ifstream infile("input.csv");

    TGraphErrors *g1 = new TGraphErrors();
    g1->SetName("name_for_graph");
    g1->SetTitle("Title for your Graph;x values [x unit];y values [y unit]");

    Int_t pt=0, nv=0;
    Double_t e_vc=0.;
    Double_t vs=0., vc=0.;

    infile >> e_vs >> e_vc;

    while (1) {
            if(!infile.good()) break;

            infile >> vs >> vc;

            g1->SetPoint(pt, vs, vc);
            g1->SetPointError(pt, e_vs, e_vc);
            pt++;
    }
    infile.close();

...

    g1->Draw("APX");
于 2017-06-13T21:14:52.443 回答