Python Matplotlib直方图bin shift

Python Matplotlib直方图bin shift,python,python-2.7,matplotlib,histogram,cdf,Python,Python 2.7,Matplotlib,Histogram,Cdf,我已经从列表中创建了一个累积(CDF)直方图,这正是我想要的。然后我从列表中的每个元素中减去一个固定值(通过使用x=[fixed_value-I for I in myArray]),只需将存储箱移动固定数量即可。然而,这使得我的CDF直方图在y轴上反转。我认为它看起来应该和原来的一样,只是x轴(箱子)移动了一个固定的量 那么,有人能解释一下我做错了什么,或者给出一个解决方案,让我把垃圾桶移过来,而不是用一个新数组重新创建另一个直方图吗 编辑: 有时我会看到这样的错误: >>>

我已经从列表中创建了一个累积(CDF)直方图,这正是我想要的。然后我从列表中的每个元素中减去一个固定值(通过使用
x=[fixed_value-I for I in myArray]
),只需将存储箱移动固定数量即可。然而,这使得我的CDF直方图在y轴上反转。我认为它看起来应该和原来的一样,只是x轴(箱子)移动了一个固定的量

那么,有人能解释一下我做错了什么,或者给出一个解决方案,让我把垃圾桶移过来,而不是用一个新数组重新创建另一个直方图吗

编辑:

有时我会看到这样的错误:

>>> plt.hist(l,bins, normed = 1, cumulative = True)
C:\Python27\lib\site-packages\matplotlib\axes.py:8332: RuntimeWarning: invalid value encountered in true_divide
  m = (m.astype(float) / db) / m.sum()
但这并不是第二种减法情况所独有的。并且plt.hist返回一个NaN数组。我不确定这是否有帮助,但我想我正在接近找到答案

编辑: 这是我的两张图表。第一个是“好”的。第二个是“坏”的:


我所要做的就是把第一个垃圾箱移到固定的位置。然而,当我从直方图中的每个列表中减去相同的值时,它似乎会改变直方图在y方向和x方向上的变化。另外,请注意第一个直方图都是负值,第二个直方图是正值。我似乎通过保持它为负值来修复它(我使用
原始数组[I]-固定值0

我认为问题可能在于如何计算移位值。这个例子很适合我:

import numpy as np
import matplotlib.pylab as pl

original_array = np.random.normal(size=100)
bins = np.linspace(-5,5,11)

pl.figure()
pl.subplot(121)
pl.hist(original_array, bins, normed=1, cumulative=True, histtype='step')

offset = -2
modified_array = [original_value + offset for original_value in original_array]

pl.subplot(122)
pl.hist(modified_array, bins, normed=1, cumulative=True, histtype='step')

请注意,
numpy
可能会让您的生活更轻松(对于大尺寸的
original_数组
,速度要快得多);例如,如果您的数据是
numpy.array
,您还可以将其写入:

modified_array = original_array + offset

您的问题与柱状图无关,而纯粹是因为您编写了
x=[fixed\u value-i for i in myArray]
,而不是
x=[i-fixed\u value for i in myArray]
。检查以下示例:

import numpy as np
import pylab as pl

x = np.linspace(0, 10., 1000)
y = np.exp(x)

x2 = [ 5. - i  for i in x]
x3 = [ i  - 5. for i in x]

pl.plot(x , y)
pl.plot(x2, y)
pl.plot(x3, y)

如果绘制这些图形,您会看到第二个图形是第一个图形的镜像、移位版本,第三个图形具有您要查找的移位。

在y轴上反转。。。。。?您能否显示一些结果图和/或最小的工作代码来重现问题?至于
无效值
db
在Matplotlib中计算为
db=np.diff(bin)
,因此我唯一能想到的是您提供了一个或多个大小为零的bin?@Bart感谢您的回复。我做了一些编辑。这有助于澄清吗?我对这两个图都使用相同的代码,除了在第二个图中,我迭代我的数组并首先减去一个固定值(加上更改容器),第一个图就是我想要的。第二张图应该是相同的,只是x轴不同。我想你应该做
[I-固定值…]
@MaxNoe我想你是对的,这似乎是共识。谢谢谢谢你的回答,我真的很感激。这是有道理的……但我只有“y值”,所以我改变了“y值”。然后,我通过调用pyplot.hist()将它们放入垃圾箱中。我看到的是关于x轴的反转,而不是像你的例子所示的关于y轴的反转。