ROOT学习——带字母数字标签的二维直方图(hlabels2.C)

本文档展示了如何使用ROOT库在C++中创建和填充二维直方图,并详细说明了如何设置坐标轴的标签,包括通过`LabelsDeflate`、`LabelsOption`方法调整标签显示,以及利用`TPaveText`添加说明文字。代码示例中创建了一个包含月份和人物名称的直方图,并用随机数填充,最后展示如何绘制和定制直方图的轴标签。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二维直方图在实际科研作图中使用较为广泛,它能直观的显示二维数据的分布。
hlabel2.C
下面介绍具体步骤:

  1. 设置二维直方图坐标值:
const Int_t nx = 12;
const Int_t ny = 20;
const char *month[nx]  = {"January","February","March","April","May","June","July","August","September","October","November","December"};
const char *people[ny] = {"Jean","Pierre","Marie","Odile","Sebastien","Fons","Rene","Nicolas","Xavier","Greg","Bjarne","Anton","Otto","Eddy","Peter","Pasha","Philippe","Suzanne","Jeff","Valery"};
  1. 创建画布:
TCanvas *c1 = new TCanvas("c1","demo bin labels",10,10,600,600);
c1->SetGrid();	//设置网格
c1->SetLeftMargin(0.15);	//左侧留边距
c1->SetBottomMargin(0.15);	//底部留边距
  1. 创建二维直方图:
TH2F *h = new TH2F("h","test",3,0,3,2,0,2);
h->SetCanExtend(TH1::kAllAxes);
h->SetStats(0);
  1. 填充随机数:
gRandom->SetSeed();
for (Int_t i=0;i<15000;i++) {
   Int_t rx = gRandom->Rndm()*nx;
   Int_t ry = gRandom->Rndm()*ny;
   h->Fill(people[ry],month[rx],1);
}
  1. 将选项中传递的轴的bin数减少到带有标签的bin数,对带有标签的bin进行排序或设置选项以绘制带有标签的轴,绘制直方图:
h->LabelsDeflate("X");
h->LabelsDeflate("Y");
h->LabelsOption("v");
h->Draw("text");
  1. 定义标签,设置标签内容并绘制:
TPaveText *pt = new TPaveText(0.6,0.85,0.98,0.98,"brNDC");
pt->SetFillColor(18);
pt->SetTextAlign(12);
pt->AddText("Use the axis Context Menu LabelsOption");
pt->AddText(" \"a\"   to sort by alphabetic order");
pt->AddText(" \">\"   to sort by decreasing values");
pt->AddText(" \"<\"   to sort by increasing values");
pt->Draw();

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值