首页 > 解决方案 > 从 matplotlib 中的直方图中提取数据点

问题描述

我使用 matplotlib 从文本文件中提取数据点来创建直方图。代码如下:

import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

data1 = np.loadtxt('file1.txt')
data2 = np.loadtxt('file2.txt')
x = np.transpose(data1)[1]
y = np.transpose(data2)[1]

n, bins, patches = plt.hist(x, num_bins, facecolor='blue', alpha=0.5, label='electrons', 
edgecolor='black', linewidth=0.7, range=[0, 450])
n, bins, patches = plt.hist(y, num_bins, facecolor='magenta', alpha=0.5, label='pions', 
edgecolor='black', linewidth=0.7, range=[0, 450])

plt.show() 

到目前为止一切顺利,我创建了一个直方图。但是,我的下一步是使用 clip() 函数,以便我可以为要显示的值定义一定范围,并将异常值映射到第一个(低于最小阈值的值)和最后一个 bin(值高于最大阈值)。我已将代码更改为:

n, bins, patches = plt.hist(np.clip(x, 8, 400), num_bins, facecolor='blue', alpha=0.5, 
label='electrons', edgecolor='black', linewidth=0.7, range=[8, 400])
n, bins, patches = plt.hist(np.clip(y, 8, 400), num_bins, facecolor='magenta', alpha=0.5, 
label='pions', edgecolor='black', linewidth=0.7, range=[8, 400])

这些图也在这里正确创建。现在我的问题:我想从这个新创建的绘图中获取数据点,因为数据现在已经更改,并且想将这些数据点作为列写入文本文件。我怎样才能做到这一点?

标签: pythonmatplotlib

解决方案


推荐阅读