阅读matplotlib有关直方图的文档后,我预期range会忽略下限和上限的异常值。
"range:元组,可选参数,默认值为None
柱形图的下限和上限范围。下限和上限的异常值将被忽略。
如果没有提供,则range
为(x.min(),x.max())。如果bins
是序列,则范围无效。"
请看以下示例:
import numpy as np
import matplotlib.pyplot as plt
numbers1 = np.arange(1.,101.)
numbers2 = np.arange(0.5,100.5)
numbers3 = np.arange(0,100)
plt.figure(figsize=(12,4))
plt.subplot(1,3,1)
plt.hist(numbers1, bins = 25, range = (25,75), normed=True)
plt.title('numbers1')
plt.ylim((0,0.035))
plt.subplot(1,3,2)
plt.hist(numbers2, bins = 25, range = (25,75), normed=True)
plt.title('numbers2')
plt.ylim((0,0.035))
plt.subplot(1,3,3)
plt.hist(numbers3, bins = 25, range = (25,75), normed=True)
plt.title('numbers3')
plt.ylim((0,0.035))
很不幸,由于声望不够,我无法发布结果的图像...但是:数字1和数字3的直方图都具有比我预期的最后一个bin高的值。
为什么会这样,它真的应该这样吗?我希望它们全部看起来像中间那个。 :-(
(25, 75.01)
,则每个箱子都会稍微大一些,因此第一个箱子将适合25、26和27。使用从25到75的范围并恰好具有25到75的数字,您就有了一个边缘情况,而Matplotlib显然使用最后一个箱子。 - fhdrsdg