【ROOT from CERN】——平行绘制两张一维直方图

该文展示了一个实例,如何利用C++的TCanvas和TH1D类在ROOT环境中将两个一维直方图绘制到同一张画布上,同时展示了如何保存为PNG图像。文章提到了如何调整统计信息和画布布局以优化视觉效果,并建议通过ROOT的GUI界面进行更精细的调整。

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

本篇文章介绍一个实例,运用TCanvas,TH1类将两张一维直方图平行绘制在同一张画布上,显示更多统计量,并保存为png格式。

代码模板如下:

#include<iostream>
using namespace std;
int Parallel_histogram()
{
	TCanvas* c1 = new TCanvas("c1","Parallel_histogram",1920,1080);
	c1->Divide(2,1,0.01,0.01);
	
	gStyle->SetOptStat("eMRSK");

	c1->cd(1);
	TH1D* th1 = new TH1D("th1","Histo_Gaus;X_Axis;Y_Axis",100,0.,10.);
	for(Int_t i=0;i<10000;++i)
	{
		Double_t r=gRandom->Gaus(5,1);
		th1->Fill(r);
	}
	th1->Draw();

	c1->cd(2);
	TH1D* th2 = new TH1D("th2","Histo_Poisson;X_Axis;Y_Axis",100,0.,10.);
	for(Int_t i=0;i<10000;++i)
	{
		Double_t r=gRandom->Poisson(5);
		th2->Fill(r);
	}
	th2->Draw();
	
	c1->SaveAs("Parallel_histogram.png");
	
	c1->Delete();
	th1->Delete();
	th2->Delete();

	return 0;
}

图片如下:

根据自身需求基于上述代码更改填充数据即可,或更改画布划分在一张画布上画出更多函数图、直方图或折线图。

可以注意到的是,两图的Y轴均被遮挡,统计框信息显示字体过小,所占空间较大。这是ROOT自身画布默认设置导致的问题,通过代码可以调节,但是太复杂,推荐方法注释掉上述代码return语句前的四句,通过GUI手动调节后(可以看我之前的文章),手动保存为图片。

调节后的图片如下:

调节后的图片更加美观。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值