首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从TH2F中绘制COLZ TH2F?

如何从TH2F中绘制COLZ TH2F?
EN

Stack Overflow用户
提问于 2019-03-08 14:04:15
回答 2查看 1.3K关注 0票数 0

我试图从一棵树中绘制一个COLZ图,即一个带有颜色条的2D直方图,并且能够自己定义垃圾箱的数量。我的树叫做事件:

我试过:

代码语言:javascript
运行
复制
event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100");
TH2F * hist1 = (TH2F*)gDirectory->Get("hist1");
hist1->Draw("COLZ");

以及:

代码语言:javascript
运行
复制
event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100", "COLZ");
TH2F * hist1 = (TH2F*)gDirectory->Get("hist1");
hist1->Draw();

但两人都不会画出直方图。

这将绘制一个散点图:

代码语言:javascript
运行
复制
event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100");
TH2F * hist1 = (TH2F*)gDirectory->Get("hist1");
hist1->Draw();

这将绘制一个COLZ图,但使用此方法,我无法自己定义bin大小:

代码语言:javascript
运行
复制
 event->Draw("x:y", "x>100", "COLZ");
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-13 16:55:10

谢谢你的回答,凯尔多恩,但问题在我的代码的一部分,我没有张贴。

我访问根文件时使用:

代码语言:javascript
运行
复制
 TFile f("file.root"); 
 TTree* event = (TTree*)f.Get("EventTree");

将此改为:

代码语言:javascript
运行
复制
TFile *f = new TFile("file.root");
TTree* event = (TTree*)f->Get("EventTree");

修正了我所有的直方图问题!

票数 0
EN

Stack Overflow用户

发布于 2019-03-08 20:32:45

我无法复制这个问题,你的第一次尝试对我来说是有效的:

代码语言:javascript
运行
复制
event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100");
TH2F * hist1 = (TH2F*)gDirectory->Get("hist1");
hist1->Draw("COLZ");

它也可以在一行中工作:

代码语言:javascript
运行
复制
event->Draw("x:y>>hist1(1000,100,500,1000,0,500)", "x>100", "COLZ");

在第三种情况下,如果hist1->Draw();绘制散点图,那么hist1->Draw("COLZ");也应该工作。你跑的方向完全一样吗?如果是的话,您能提供一个最小、完整和可验证的示例吗?

注意:hist1->Draw();的结果不是散点图(根在这里是误导的),它是一个直方图,其中bin内容是用点表示的。参见这块地,在那里您可以猜到底层的回收箱。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55064856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档