我正在尝试编写一个从具有 4 列的 ASCII 文件中读取数据的小宏。但我只想将第二列和第三列绘制为(x,y)。
问问题
3502 次
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 回答