使用 ROOT 框架绘制 C++ 中的数学函数
Using the ROOT framework to plot a mathematical function in C++
我正在尝试使用 "ROOT" data analysis framework with C++. I've tried to use this code (found in a user guide on the web):
绘制函数图
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*");
预期的行为是获取带有函数二维绘图的图片(请参阅用户指南中的图片)。但不幸的是,没有图表显示。
当我使用 ROOT 提示时,我可以显示 canvas 如果我这样做:
root [3] g = new TGraph()
root [4] g->Draw()
但是,如果我从 C++(使用 g++)编写和编译它,它不会打开任何 canvas,也不会显示任何图形。它有时会显示消息:Info in <TCanvas::MakeDefCanvas>: created default TCanvas with name c1
但什么也没有发生 - 没有图表或 canvas 出现。
如何在 C++ 程序中使用 ROOT 来生成函数的图形绘图?
您是否按照此处的步骤操作,https://root.cern/primer/?#interpretation-and-compilation?
这是一个工作示例。
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`
我正在尝试使用 "ROOT" data analysis framework with C++. I've tried to use this code (found in a user guide on the web):
绘制函数图 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*");
预期的行为是获取带有函数二维绘图的图片(请参阅用户指南中的图片)。但不幸的是,没有图表显示。
当我使用 ROOT 提示时,我可以显示 canvas 如果我这样做:
root [3] g = new TGraph()
root [4] g->Draw()
但是,如果我从 C++(使用 g++)编写和编译它,它不会打开任何 canvas,也不会显示任何图形。它有时会显示消息:Info in <TCanvas::MakeDefCanvas>: created default TCanvas with name c1
但什么也没有发生 - 没有图表或 canvas 出现。
如何在 C++ 程序中使用 ROOT 来生成函数的图形绘图?
您是否按照此处的步骤操作,https://root.cern/primer/?#interpretation-and-compilation?
这是一个工作示例。
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`