ROOT学习——二维直方图Highlight显示(hlHisto2.C)

本示例演示如何在直方图上使用突出显示机制,设置2D直方图,并填充一个随机的高斯分布,并使用“ col”选项进行绘制,然后将高光方法连接到直方图,在直方图上移动鼠标会打开一个新的画布,在突出显示的bin上显示两个X和Y投影。
hlHisto2(1).C
hlHisto2(2).C
下面介绍具体步骤:

  1. 定义全局变量:
TText *info;
  1. 定义highlight函数:
void Highlight2(TVirtualPad *pad, TObject *obj, Int_t xhb, Int_t yhb)
{
   auto h2 = (TH2F *)obj;
   if(!h2) return;
   auto CanvasProj = (TCanvas *) gROOT->GetListOfCanvases()->FindObject("CanvasProj");
   if (!h2->IsHighlight()) { //突出显示禁用后
      if (CanvasProj) delete CanvasProj;
      return;
   }

   info->SetTitle("");

   auto px = h2->ProjectionX("_px", yhb, yhb);
   auto py = h2->ProjectionY("_py", xhb, xhb);
   px->SetTitle(TString::Format("ProjectionX of biny[%02d]", yhb));
   py->SetTitle(TString::Format("ProjectionY of binx[%02d]", xhb));

   if (!CanvasProj) {
      CanvasProj = new TCanvas("CanvasProj", "CanvasProj", 505, 0, 600, 600);
      CanvasProj->Divide(1, 2);
      CanvasProj->cd(1);
      px->Draw();
      CanvasProj->cd(2);
      py->Draw();
   }

   CanvasProj->GetPad(1)->Modified();
   CanvasProj->GetPad(2)->Modified();
   CanvasProj->Update();
}
  1. 绘制二维直方图:
auto Canvas = new TCanvas("Canvas", "Canvas", 0, 0, 500, 500);
auto h2 = new TH2F("h2", "", 50, -5.0, 5.0, 50, -5.0, 5.0);
for (Int_t i = 0; i < 10000; i++) h2->Fill(gRandom->Gaus(), gRandom->Gaus());
h2->Draw("col");
  1. 设置初始TText:
info = new TText(0.0, -4.0, "please move the mouse over the frame");
info->SetTextAlign(22);
info->SetTextSize(0.04);
info->SetTextColor(kRed+1);
info->SetBit(kCannotPick);
info->Draw();
Canvas->Update();
  1. 显示Highlight:
h2->SetHighlight();
Canvas->HighlightConnect("Highlight2(TVirtualPad*,TObject*,Int_t,Int_t)");

代码地址:https://github.com/root-project/root/blob/master/tutorials/hist/hlHisto2.C

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值