使用ROOT框架在C++中绘制数学函数



我正试图使用;ROOT";用C++实现的数据分析框架。我试过使用这个代码(在网上的用户指南中找到(:

Int_t n = 20;
Double_t x[n], y[n];
for (Int_t i=0;i<n;i++) {
x[i] = i*0.1;
y[i] = 10*sin(x[i]+0.2);
}
// create graph
TGraph *gr  = new TGraph(n,x,y);
TCanvas *c1 = new TCanvas("c1","Graph Draw Options",
200,10,600,400);
// draw the graph with axis, continuous line, and put
// a * at each point
gr->Draw("AC*");

预期的行为是获得一张带有函数2D图的图片(请参阅用户指南中的图片(。但不幸的是,没有显示任何图表。

当我使用ROOT提示时,如果我只是这样做,我可以显示一个画布:

root [3] g = new TGraph()
root [4] g->Draw()

但是,同样,如果我从C++(使用g++(编写和编译它,它不会打开任何画布,也不会显示任何图形。它有时会显示消息:Info in <TCanvas::MakeDefCanvas>: created default TCanvas with name c1,但什么也没发生——没有显示任何图形或画布。

如何在C++程序中使用ROOT来生成函数的图形图?

您按照这里的步骤操作了吗,https://root.cern/primer/?#interpretation-和汇编?

下面是一个工作示例。

demo.cpp

#include <TApplication.h>
#include <TGraph.h>
void guiDemo() {
Int_t n = 20;
Double_t x[n], y[n];
for (Int_t i=0;i<n;i++) {
x[i] = i*0.1;
y[i] = 10*sin(x[i]+0.2);
}
// create graph
TGraph *gr  = new TGraph(n,x,y);
// draw the graph with axis, continuous line, and put
// a * at each point
gr->Draw("AC*");
}
int main(int argc, char **argv) {
TApplication app("Root app", &argc, argv);
guiDemo();
app.Run();
return 0;
}

用编译

g++ -Wall -Wextra -o demo demo.cpp `root-config --cflags --libs`

相关内容

  • 没有找到相关文章

最新更新