我试图从一棵树中绘制一个COLZ图,即一个带有颜色条的2D直方图,并且能够自己定义垃圾箱的数量。我的树叫做事件:
我试过:
event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100");
TH2F * hist1 = (TH2F*)gDirectory->Get("hist1");
hist1->Draw("COLZ");
以及:
event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100", "COLZ");
TH2F * hist1 = (TH2F*)gDirectory->Get("hist1");
hist1->Draw();
但两人都不会画出直方图。
这将绘制一个散点图:
event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100");
TH2F * hist1 = (TH2F*)gDirectory->Get("hist1");
hist1->Draw();
这将绘制一个COLZ图,但使用此方法,我无法自己定义bin大小:
event->Draw("x:y", "x>100", "COLZ");
发布于 2019-03-13 16:55:10
谢谢你的回答,凯尔多恩,但问题在我的代码的一部分,我没有张贴。
我访问根文件时使用:
TFile f("file.root");
TTree* event = (TTree*)f.Get("EventTree");
将此改为:
TFile *f = new TFile("file.root");
TTree* event = (TTree*)f->Get("EventTree");
修正了我所有的直方图问题!
发布于 2019-03-08 20:32:45
我无法复制这个问题,你的第一次尝试对我来说是有效的:
event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100");
TH2F * hist1 = (TH2F*)gDirectory->Get("hist1");
hist1->Draw("COLZ");
它也可以在一行中工作:
event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100", "COLZ");
在第三种情况下,如果hist1->Draw();
绘制散点图,那么hist1->Draw("COLZ");
也应该工作。你跑的方向完全一样吗?如果是的话,您能提供一个最小、完整和可验证的示例吗?
注意:hist1->Draw();
的结果不是散点图(根在这里是误导的),它是一个直方图,其中bin内容是用点表示的。参见这块地,在那里您可以猜到底层的回收箱。
https://stackoverflow.com/questions/55064856
复制相似问题