如何在Python中绘制ROOT(CERN)风格的图表?
在Python中实现ROOT风格绘图
1. 安装依赖库
首先需要安装用于绘图的基础库和专门实现高能物理绘图风格的工具:
pip install matplotlib mplhep
2. 基础散点+拟合曲线示例
以下代码可生成带误差棒的散点图与拟合曲线,完全匹配ROOT的视觉风格:
import matplotlib.pyplot as plt import mplhep as hep import numpy as np # 切换为ROOT绘图风格 hep.style.use("ROOT") # 生成示例数据 x = np.linspace(0, 10, 100) y = np.sin(x) + np.random.normal(0, 0.1, 100) # 创建绘图对象 fig, ax = plt.subplots() # 绘制带误差棒的散点(ROOT常见数据展示方式) ax.errorbar(x, y, yerr=0.1, fmt='o', capsize=3, label='实验数据') # 绘制拟合曲线 ax.plot(x, np.sin(x), 'r-', label='拟合曲线') # 设置标签与标题 ax.set_xlabel('X轴') ax.set_ylabel('Y轴') ax.set_title('ROOT风格示例图') ax.legend() plt.show()
3. ROOT风格直方图示例
直方图是ROOT的核心图表类型,以下代码实现带统计信息框的ROOT风格直方图:
import matplotlib.pyplot as plt import mplhep as hep import numpy as np hep.style.use("ROOT") # 生成随机样本数据 data = np.random.normal(0, 1, 1000) fig, ax = plt.subplots() # 绘制ROOT风格填充直方图 hep.histplot(data, bins=20, ax=ax, label='数据分布', histtype='fill', edgecolor='black') # 添加ROOT风格的统计信息框(自动计算均值、方差等) hep.statbox(data, bins=20, ax=ax) # 设置标签与标题 ax.set_xlabel('数值') ax.set_ylabel('计数') ax.set_title('ROOT风格直方图') ax.legend() plt.show()
关键细节说明
hep.style.use("ROOT")会一键应用ROOT的字体、坐标轴样式、配色等全套风格配置hep.histplot是专门针对高能物理场景优化的直方图绘制工具,完美匹配ROOT的直方图表现- 普通绘图元素(散点、曲线)配合ROOT风格后,视觉效果会自动向ROOT对齐
内容的提问来源于stack exchange,提问作者Akash Parmar
相关产品推荐
相关产品推荐

