2013-04-05 85 views
11

pyplot.hist() documentation指定当为直方图设置范围“忽略较低和较高异常值”使pyplot.hist()第一个和最后一个bin包含异常值

是否可以使直方图的第一个和最后一个bin包含所有异常值而不改变bin的宽度

例如,假设我想查看范围0-3,其中包含3个分档:0-1, 1-2, 2-3(为简单起见,我们忽略精确相等的情况)。我希望第一个bin将负的所有值都包含到1,最后一个bin包含从2到无穷大的所有值。但是,如果我明确设置这些分箱以跨越此范围,则它们将非常宽。我希望他们有相同的宽度。我正在寻找的行为就像在Matlab中的hist()的行为。

显然我可以numpy.clip()的数据和情节,这会给我我想要的。但是,如果有内置解决方案,我很感兴趣。

+4

听起来像是你有一个两行的解决方案('numpy.clip(); pyplot.hist()'),你会想要一个班轮。虽然我猜''hist'的'clip'关键字会很好,但我认为没有人会因为它非常基本而困扰它。当然,你可以随时向matplotlib提交一个补丁:-)。 – Evert 2013-04-05 15:46:07

+1

是的,@Evert是正确的,剪辑是最好的解决方案。我会说'pyplot.hist()'不会建立这个可能是因为它会产生误导的情节,如果没有仔细注释。 – askewchan 2013-04-05 16:22:00

+0

@Evert好的,谢谢。我只是想看到我不会错过一些更好的解决方案来获得这种行为。 – Bitwise 2013-04-05 21:12:25

回答

6

不,看着matplotlib.axes.Axes.hist和直接使用numpy.histogram我相当有信心说没有比使用剪辑更聪明的解决方案(除了扩展你的直方图)。

我会鼓励你看看matplotlib.axes.Axes.hist源(这只是Python代码,但无可否认HIST稍微复杂一点比大多数的轴方法) - 这是验证这种问题的最佳途径。

HTH

相关问题