图表的概念

最基本的数据可视化方法是使用由两个(TGraph)或三个(TGraph2D)数组组成的坐标表示数据的大小或位置,称作 Graph 。这与直方图(Histogram)不同。ROOT 提供了许多图形类,如:

TGraph图表;

TGraphErrors具有对称误差线的图表;

TGraph2D由三个数组 X、Y 和 Z 组成的图表等。

图表的使用

TGraph支持批量创建和运算,TGraph的创建方法是:

// 创建了一个名字是name,标题是title,有n个坐标为x,y的点:
TGraph *gr = new TGraph("name", "title", number, x, y)
TGraph* gr = new TGraph("name", "title", number, x, y)
TGraph *gr = new TGraph(number, x, y)
auto gr = new TGraph(number, x, y)
auto gr = new TGraph()    // 使用AddPoint()函数添加坐标点
auto dt = new TGraph2D()    // 二维图表,其他形式同理

绘制图表前需要先定义坐标数组,然后使用TGraph构造图形。E.g.

   int n = 20;
   double x[n], y[n];
   for (int i=0; i<n; i++) {
      x[i] = i*0.1;
      y[i] = 10*sin(x[i]+0.2);
   }
   auto gr = new TGraph (n, x, y);

也支持使用AddPoint()函数添加点:

auto gr = new TGraph();
for (int i=0; i<20; i++) gr->AddPoint(i*0.1, 10*sin(i*0.1+0.2));

使用TGraph::Draw()绘制图形,且有多种绘图选项可选:

   auto gr = new TGraph();
   for (int i=0; i<20; i++) gr->AddPoint(i*0.1, 10*sin(i*0.1+0.2));
   gr->Draw();

从文件中读取数据

数据的保存格式有很多,常见的是文本格式和 root 格式:

这里要求文件中的坐标中间是空格或者制表符,不可以是逗号。E.g.

int directdata(){
    TGraph *gr = new TGraph("mydata.txt");
    gr->Draw("AC*");    // 绘出 axis,坐标点以 curve 链接,坐标点形状为 * 型
}

从图表中读取数据