如何用Python绘制单光子探测器光子计数率直方图CSV数据?
用Python绘制单光子计数率数据的方法
准备工作
先确保安装了必要的Python库,打开终端执行:
pip install pandas matplotlib
情况1:CSV存储的是原始光子计数测量值
如果你的5000个数据点是每次测量得到的光子计数原始值,需要统计并绘制直方图,代码如下:
import pandas as pd import matplotlib.pyplot as plt # 读取单列CSV数据(无表头) data = pd.read_csv("your_data.csv", header=None) # 提取数据列并转为一维数组 counts = data[0].values # 绘制直方图 plt.figure(figsize=(10, 6)) # bins参数可调整区间数量,根据数据分布自行设置 n, bins, patches = plt.hist(counts, bins=50, edgecolor='black') # 设置图表样式 plt.title("单光子探测器计数率直方图") plt.xlabel("计数率") plt.ylabel("出现次数") plt.grid(axis='y', alpha=0.75) # 显示图形(如需保存图片,可在该行前添加plt.savefig("count_hist.png")) plt.show()
情况2:CSV存储的是已统计好的直方图区间计数
如果你的数据已经是分区间统计后的计数值(比如每一行对应一个区间的计数次数),需要先定义x轴的区间标签,再绘制柱状图:
import pandas as pd import matplotlib.pyplot as plt # 读取数据并转为一维数组 counts = pd.read_csv("your_data.csv", header=None).values.flatten() # 生成x轴区间:示例为按数据点数量均分,可根据实际区间范围修改 x = range(len(counts)) # 若已知区间步长,比如步长为2,可改为:x = [i*2 for i in range(len(counts))] # 绘制柱状图 plt.figure(figsize=(10, 6)) plt.bar(x, counts, width=0.8, edgecolor='black') # 设置图表样式 plt.title("单光子探测器计数率分布") plt.xlabel("计数区间") plt.ylabel("计数次数") plt.grid(axis='y', alpha=0.75) plt.show()
注意事项
- 替换代码中的
your_data.csv为你的实际文件路径 - 可根据数据分布调整
bins参数(直方图)或区间范围(柱状图),让图形展示更直观
内容的提问来源于stack exchange,提问作者Gareth
相关产品推荐
相关产品推荐

