cern root中的pyroot---Histogram

直方图是数据分布的近似表示,它们在任何种类的物理分析中都起着基本的作用。直方图可用于可视化您的数据,作为底层数据密度分布的近似值,它们也可用作一种强大的数据简化形式。
·直方图类别
root直方图类从基本TH1类派生而来,这是一个与root直方图交互的公共接口,派生类的存在取决于一维、二维和三维以及用于表示bin(分块)内容的类型:
每个通道一个字节:TH1C、TH2C或TH3C。最大bin含量= 127。
每个通道一个短型数:TH1S,TH2S或TH3S。最大bin含量= 32767。
每个通道一个整型数:TH1I、TH2I或TH3I。最大bin含量= 2147483647。
每个通道一个浮点数:TH1F、TH2F或TH3F。最大精度7位数,最大bin数量约为1E7。
每个通道一个double:TH1D、TH2D或TH3D。最大精度15位数字,对应于大约5E15的最大bin数量。
建议使用双精度版本:TH1D用于一维情况,TH2D用于二维情况,TH3D用于三维情况。
·创建简单直方图
类TH1I、TH2F、TH3D创建的直方图:
   TH1* h1 = new TH1I("h1", "h1 title", 100, 0.0, 4.0);
   TH2* h2 = new TH2F("h2", "h2 title", 40, 0.0, 2.0, 30, -1.5, 3.5);
   TH3* h3 = new TH3D("h3", "h3 title");
其中,“h1”是直方图的name,“h1 title”是直方图的标题,(100,0.0,4.0)表示在直方图中,将0-4这个区域平均分成100份(bin数)

·创建bin范围不同的直方图:
double binEdges[] = { 0.0, 0.2, 0.5, 1., 2., 4. };
   TH1* h1 = new TH1D("h1", "h1 title", 5, binEdges );   
表示将区域分为(0,0.2),(0.2,0.5),(0.5 , 1),(1,2),(2,4)

创建完直方图后向直方图中填充数据
·一般填充
h1->Fill(x,w); // with weight
h2->Fill(x,y,w);  // with weights
h3->Fill(x,y,z,w); // with weights
Fill()方法将给定的x、y或z参数填充到相对应的bin中,并按给定的权重(w)填充

·随机数填充
用TH1::FillRandom()方法用随机数填充直方图,FillRandom()方法使用现有TF1函数或另一个TH1直方图的内容以及gRandom中定义的默认随机数生成器。
TH1F h1("h1","Histogram from a Gaussian",100,-3,3);
  h1.FillRandom("gaus",10000);
表示直方图被随机填充10000次,默认的高斯分布为平均值0和sigma 1。

·归一化直方图
  h1->Scale(1./h1->Integral(), "width");

·画图
  h1.Draw();

例子:画一个一维直方图并用FillRandom填充(pyroot)
import ROOT
h1=ROOT.TH1F("h1","histogramEX",100,-3,3)
ROOT.h1.FillRandom("gaus",10000)
h1.Draw()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值