HEP的Matplotlib样式

mplhep的Python项目详细描述


DOIScikit-HEP

DocsPyPI versionSupported Python versions

Build StatusGitHub Actions Status: CIGitHub Actions Status: Publishpre-commit.ci status

PyPI download week

Binder

一组帮助器,matplotlib可以更容易地生成绘图 需要在HEP以及风格他们的方式,以兼容电流 协作要求(CMS、ATLAS、LHCb、ALICE的根状图)。在

安装

pip install mplhep

入门

造型

^{pr2}$

样式也可以直接从matplotlibAPI设置

importmatplotlib.pyplotaspltimportmplhepashepplt.style.use(hep.style.ROOT)

还提供实验专用样式。如果默认样式不是您需要的,我很乐意合并为新样式或修改当前样式。

默认实验标签也可用。在

# Overall - both left and right annotationhep.<experiment>.label()# Just experiment label and <text> such as 'Preliminary' or 'Simulation'hep.<experiment>.text(<text>)

绘制

1D直方图
h,bins=[2,3,2],[0,1,2,3]hep.histplot(h,bins)

2D直方图

importnumpyasnpxbins,ybins=[0,1,2,3],[0,1,2,3]H=np.array([[2,3,2],[1,2,1],[3,1,3]])hep.hist2dplot(H,xbins,ybins)

更多信息

其他款式:

  • hep.set_style("fira")-使用Fira SAN
  • hep.set_style("firamath")-使用Fira数学

可以链接样式:

  • e、 g.hep.set_style(["CMS", "fira", "firamath"])
  • 重新出现rcParams被静默覆盖

可以动态修改样式

  • 因为样式是字典,它们可以被链接/覆盖,所以可以很容易地动态修改。e、 g
hep.set_style("CMS")
hep.set_style({"font.sans-serif":'Comic Sans MS'})

乳胶造型

  • hep.set_style("CMSTex")-使用乳胶生成所有文本标签
  • 需要有完整的tex live发行版
  • 真海尔维提卡
  • 使用sansmath作为数学字体
  • 需要更长时间,但并不总是更好
  • 一般来说,可能性更大,但要想让一切正常运转就更难了

注释

一致性和字体

因为它是根不附带任何字体,因此依赖于使用系统字体。因此,图形中的字体取决于它是在OSX上还是在PC上生成的。默认的无衬线字体是Helvetica,但它只随OSX一起提供,在Windows中,它会自动退到Arial。在

许可证

Helvetica和Arial都是专有的,就字体而言,这意味着您可以使用它来创建任何文本/图形,但您不能将字体文件作为其他软件的一部分重新分发。这意味着我们不能仅仅用这个来包装Helvetica来确保每个人都有相同的字体。在

幸运的是字体似乎只有软件是有版权的,而不是实际的形状,这意味着有相当多的开放的替代品与类似的外观。最像海尔维提卡的是德克萨斯州的回旋英雄

德州旋回英雄

http://www.gust.org.pl/projects/e-foundry/tex-gyre/heros

如果下面的差异有意义,你可以自己比较一下。在

他们分别是特克斯盖尔英雄,海尔维蒂卡和阿里尔。在

数学字体

为了保持一致的风格,还包括Fira Sans。在

默认Fira SAN

https://github.com/mozilla/Fira

数学字体扩展

https://github.com/firamath/firamath

什么不管用

上下文样式和字体

withpyplot.style.context(style.ROOT):plotting...

现在必须全局设置样式:

用于出版物

更新出版物中mplhep的引文和用例列表:

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
CentOS上的java Spring Boot简易应用程序需要很长时间才能启动   java如何检查字符串值是否等于null?   收集器中的java映射值。分组方式()   java需要支持Azure AD B2C webapp集成   java如何加入线程以停止它?   java如何使用意图传递类的对象?   java如何在战争环境中发现CDI生产者?   多模块项目中java奇怪的编译器行为   java如何在web应用程序中管理密码?   java从http服务器、filehandler中删除冗余代码   java使用反射来获取泛型类的字段   java Spring MVC/Hibernate/MySQL 400错误请求错误   给定正整数a的java幂为3   在Java中将元素拆分为不同数量的列表?   java展开折叠窗格