我想使用CERN ROOT绘制成对的x-y数据点 的2d图表,可能还有y-errorbars 。但是我只知道如何绘制直方图。
这可能与CERN ROOT有关吗?如果是这样的话?
我也意识到可能有更好的库来做这件事。我一直在使用GNUPlot,但不幸的是我似乎无法将它与我的C ++代码很好地集成,因为我无法找到涵盖所有功能的C / C ++ GNUPlot接口,并允许我发送数据双向方式 - 即:往返于GNUPlot。
如果您有更好的替代建议,那么非常欢迎。
答案 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
,TGraph
,TGraphErrors
。
编辑:
来自其主页的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;
**但是** 此代码无法在循环中运行。后续图表将为空白。我不知道为什么。