CERN ROOT:是否可以绘制成对的x-y数据点?

时间:2015-07-27 13:28:09

标签: c++ graph plot gnuplot root-framework

我想使用CERN ROOT绘制成对的x-y数据点 的2d图表,可能还有y-errorbars 。但是我只知道如何绘制直方图。

这可能与CERN ROOT有关吗?如果是这样的话?

我也意识到可能有更好的库来做这件事。我一直在使用GNUPlot,但不幸的是我似乎无法将它与我的C ++代码很好地集成,因为我无法找到涵盖所有功能的C / C ++ GNUPlot接口,并允许我发送数据双向方式 - 即:往返于GNUPlot。

如果您有更好的替代建议,那么非常欢迎。

2 个答案:

答案 0 :(得分:1)

gnuplot iostream将数据从c ++发送到gnuplot。在root中,您可以使用(根据其他人的建议)Sub ImportSharePointData() Dim objMyList As ListObject Dim objWksheet As Worksheet Const SPServer As String = "http://ln- sharepoint.XXXintra.net/XXX/XXX/XXX/_vti_bin" Const LISTNAME As String = "{06AAB69F-XXX-XXX-XXX-8F677FE38D76}" Const VIEWNAME As String = "Agreement" ActiveSheet.ListObjects.Add SourceType:=xlSrcExternal, Source:= _ Array(SPServer, VIEWNAME, LISTNAME), LinkSource:=True, Destination:=Range("A1") End Sub TGraphTGraphErrors

编辑:

来自其主页的gnuplot iostream示例如下所示。 意味着一旦将数据点作为元组的一个向量或浮点数的几个向量,就可以将它们发送到gnuplot。

TGraphAsymErrors

答案 1 :(得分:0)

是的,有可能,你可以这样做:

// At program start
TApplication tapp("app", 0, 0); // this is needed for some reason - not ideal

// Later in program
TGraph *tgraph = new TGraph(N, x, y); // data: x,y N points
TCanvas *tcanvas = new TCanvas("tcanvas","canvas title", 200, 10, 800, 600);
tgraph->SetMarkerColor(kBlue);
tgraph->SetMarkerStyle(21);
tgraph->Draw();
tcanvas->Update();

// Wait for user to check if graph is "okay"
std::cin.get();

delete tcanvas;
delete tgraph;

**但是** 此代码无法在循环中运行。后续图表将为空白。我不知道为什么。