在python/matplotlib中绘制CAFAna对象的库
cafplot的Python项目详细描述
为什么是cafplot?在
那么,为什么要使用cafplot进行绘图,而不是直接使用CAFAna/ROOT呢 功能?以下是您可能对cafplot感兴趣的几个原因
- 易于开发。python类型系统的动态特性, 通用成熟的标准库和丰富的python包生态系统将 与c++相比,使用python编写代码要轻松得多。期待你的Python 脚本是2-3 times shorter比可比的c++版本。在
- Run Anywhere。cafplot只依赖于几个标准的python包 用于绘图。这允许您在几乎所有计算机上运行cafplot脚本 最小的设置。这与卡法纳的剧本形成了鲜明的对比 您需要先设置/编译NOvA Art framework。在
- Speed。是的,使用python/matplotlib打印比使用快得多 咖啡/根。在编译绘图CAFAna宏时 类似的python脚本应该已经运行完毕。在
- 可转移知识。与根框架的知识不同 具体到学术界,这两个领域都需要python/matplotlib栈的知识 学术界和工业界。在
安装
您可以使用pip或手动安装cafplot。在
使用PyPI
只需运行:
$ pip install cafplot
手动安装
- 关闭存储库
- 安装cafplot
$ cd cafplot
$ python setup.py install
支持读取根文件
如果需要支持读取根文件,则需要uproot包 以及:
$ pip install uproot
入门
让我们看一个绘制CAFAna频谱的简单示例。cafplot本身 不支持从caf文件创建CAFAna光谱,这意味着 只用于绘图。相应地,必须填充和创建光谱 先去卡法纳。在
在本例中,我们将使用CAFAna演示脚本 CAFAna/tute/demo2p5a.C来创建频谱。运行此演示后 脚本我们将得到一个名为save_your_spectra_to_disk.root的根文件,其中包含 一维光谱dir_nhit_spectra。现在,我们将使用cafplot绘制它。 首先,我们需要导入几个包:
importmatplotlib.pyplotaspltfromcafplotimportloadfromcafplot.plotimport*
导入完成后,让我们从一个文件加载CAFAna频谱 save_your_spectra_to_disk.root(这将需要uproot包 已安装):
root_file=load("save_your_spectra_to_disk.root")spectrum=root_file.get_spectrum("dir_nhit_spectra")
在这个操作之后,我们将把CAFAna频谱加载到spectrum 变量。与CAFAna类似,在绘制光谱之前,我们需要提取 标准化直方图。让我们通过POT将其规范化为9e20。在
root_hist=spectrum.rhist(pot=9e20)
{我们准备好了,我们的第一个光谱
f,ax=plt.subplots()# Create matplotlib Figure/Axesplot_rhist1d(ax,root_hist,'NHit',histtype="step",color="red")plt.show()# show plot
你应该可以看到绘制的光谱在一个单独的窗口中打开。在
文件
Getting Started中概述了如何使用cafplot的基本示例 第节。中提供了cafplot用法的更完整示例 examples/子目录。特别是,你可能会对 spectrum_plot.py–关于如何绘制CAFAna光谱的完整示例 和surf_plot.py——绘制CAFAna FrequentistSurface的示例。在
进一步的文档请参考python docstrings cafplot模块。在
依赖性
cafplot是用python版本3编写的,不能与python一起使用 版本2。它需要以下软件包才能正常运行:
- numpy
- matplotlib
- scipy-此时cafplot只使用stats子包 属于scipy。在
另外,如果支持读取,可能需要安装uproot 需要根文件中的CAFAna对象。在
代码概述
cafplot有几个不同用途的子包:
- plotsubpackage包含用于绘图的函数集合 RHist,Spectrum,Surface对象。在
- rfilesubpackage包含用于加载CAFAna的函数和类 来自不同文件的对象(当前支持根文件和json文件)。在
- rhistsubpackage包含近似行为的RHist类 根直方图类的。在
- spectrumsubpackage定义Spectrum类与CAFAna一起工作 光谱。在
- stats子包,用于各种统计例程。在
- surfacesubpackage包含Surface类以与CAFAna一起工作 表面。在
待办事项
- 添加对绘制二进制统计信息的支持
- 添加对绘制ROC曲线的支持
- 项目
标签: