【问题标题】:Plot histogram of Benford law绘制 Benford 定律的直方图
【发布时间】:2019-11-20 10:25:05
【问题描述】:

我试图绘制本福德定律

#+begin_src ipython :session alinbx :results none
from math import log10, log
import matplotlib
import matplotlib.pyplot as plt

matplotlib.rcParams['figure.figsize'] = (10.00, 6.18 )

def benford(n):
    return log10(n+1) - log10(n)

results = [benford(i) for i in range(1, 10)]
plt.plot(list(range(1,10)), results)
#+end_src

运行并得到结果

我想要的结果是

创建直方图

#+begin_src ipython :session alinbx :results drawer
plt.hist(results,bins=9)
plt.axis([1, 10, 1])
#+end_src

但是得到了结果

然后我花了几个小时阅读:

在完成这项简单的任务之前,我只是发布一个应该是 matplotlib 超级大师的人。

您能提供任何提示吗?

【问题讨论】:

标签: python matplotlib


【解决方案1】:

您想要绘制条形图,而不是直方图。你可以这样做:

import matplotlib.pyplot as plt
from math import log10


def benford(n):
    return log10(n+1) - log10(n)


x = [i for i in range(1, 10)]
results = [benford(i) for i in x]

fig, ax = plt.subplots()
plt.bar(x, results)
plt.xticks(x, x)
plt.show()

【讨论】:

    【解决方案2】:

    您显示的原始图是条形图,而不是直方图。使用 plt.bar(list(range(1,10)), results) 而不是 plt.hist(list(range(1,10)), results) 运行您的确切代码会导致:

    【讨论】:

      猜你喜欢
      • 2012-04-13
      • 2012-09-13
      • 1970-01-01
      • 2018-05-23
      • 1970-01-01
      • 2016-05-20
      • 2015-07-12
      • 2015-08-26
      相关资源
      最近更新 更多