【问题标题】:How do I make my histogram of unequal bins show properly?如何正确显示不等箱的直方图?
【发布时间】:2019-10-26 00:50:12
【问题描述】:

我的数据包括以下内容:

大多数数字

我想将其显示在具有以下 bin 范围的直方图中:

0-1, 1-2, 2-3, 3-4, ..., 59-60, 60-max

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

b = list(range(61)) + [2000] # will make [0, 1, ..., 60, 2000]

plt.hist(b, bins=b, edgecolor='black')
plt.xticks(b)

plt.show()

这显示了以下内容:

基本上你看到的是左边的所有数字 0 .. 60 和右边的 2000。这不是我想要的。

所以我删除了[2000] 并得到了我正在寻找的东西:

如你所见,现在更好了,但我仍然有以下问题:

如何解决这个问题,使图形周围没有任何空白(0 之前和 60 之后有很大的差距)。

我该如何解决这个问题,以便在 60 之后,在最后显示一个 2000 刻度,同时仍然保持大致相同的间距(不像第一个?)

【问题讨论】:

    标签: python matplotlib histogram bins


    【解决方案1】:

    这是一个使用一些随机数据的 hacky 解决方案。我还是不太明白你的第二个问题,但我试着根据你的措辞做一些事情

    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.axes as axes
    
    fig, ax = plt.subplots(figsize=(12, 6))
    data= np.random.normal(10, 5, 5000)
    
    upper = 31
    outlier = 2000
    
    data = np.append(data, 100*[upper])
    b = list(range(upper)) + [upper]
    
    plt.hist(data, bins=b, edgecolor='black')
    plt.xticks(b)
    b[-1] = outlier
    ax.set_xticklabels(b)
    plt.xlim(0, upper)
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-15
      • 1970-01-01
      • 1970-01-01
      • 2017-01-08
      • 1970-01-01
      • 2020-11-06
      • 2020-11-01
      • 1970-01-01
      相关资源
      最近更新 更多