我编写了一个脚本,用于分析数据,为每个数据生成一个值(介于0和2之间),根据算法删除一些数据,然后重复分析和生成值。在每个删除数据的步骤中,它生成数据日志的累积频率直方图,以帮助可视化生成值的某些范围内的峰值,y轴从0到1(表示0%到100%)和x轴从0到2(可能值的范围),因此线图中的陡峭斜率表示在陡峭斜率发生的特定域上的大量值,如此frequency histogram example。 (注意直方图中的峰值与累积图中的斜率相关)
我遇到的问题是,当我生成图表时,仅为其值生成零的数据的累积频率直方图应该是y=1
顶部的直线,表示100%的对于该特定情节,数字的值为零,但我在y=1
处得到一条仅从x=0
到x=0.5
的线,如graph所示。我需要该行一直在y=1
,从x=0
到x=2
。
以下是生成图表的代码:
# Calculate histogram and bins
hist_, bins_ = np.histogram(e.real, bins = 500, normed=0)
cuml = np.cumsum(hist_)
# Plot and normalize data range by dividing values
plt.plot(bins_[:-1], np.divide(cuml,float(max(cuml))) , label=str(rem_) + ' removed', marker = markr.next(), markevery = 9)
# Limit axis ranges to possible values
plt.xlim(0, 2)
plt.ylim(0, 1)
e.real
是一个包含生成值的列表对象,这里是在绘制上面链接的图形时记录的值:
200 removed
[ 2. 0. 2. 0. 2. 0. 2. 0. 2. 0. 2. 0. 2. 0. 2. 0. 2. 0.
2. 0. 2. 0. 2. 0. 2. 0. 2. 0. 2. 0. 2. 0. 2. 0. 2. 0.
2. 0. 2. 0. 2. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0.]
300 removed
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
382 removed
[ 0.]
正如您在记录值和中看到的那样,在 200已移除时,图表显示大约80%的数字的值为零(由从y=0.9
开始的x=0
之间的行,其余的值为2(由y=0.9
处的y=1
到x=2
的情节表示。在 300已移除 和 382已移除的图中,日志显示100%的值为零,并且图表应确认从y=1
开始的x=0
上的一行,而不是显示仅转到x=0.5
的短行。
(注意: 300删除和 382删除具有相同的图形并重叠形成短线;重叠是正确的行为)
关于如何修复我的线长的任何想法?任何帮助表示赞赏。
答案 0 :(得分:1)
尝试使用np.histogram中的范围选项
hist_, bins_ = np.histogram(e.real, bins = 500, range = (0, 2), normed=0)