如何在python中绘制高斯形状的直方图?

时间:2019-05-04 10:18:58

标签: python python-3.x matplotlib seaborn

我有一个名为df的{​​{1}},只有一列:

s

我正在使用绘制相同的直方图

size
20
28
38
42
42
42
44
124
176
192
194
216
228
316
318
2048
2714
2802
4128
4186
6910
9313
10816
16560
20704
34766
91022

,结果如下: enter image description here

我想知道如何进行一些更改:

  1. 我希望直方图具有如下的高斯外观:Example of a Gaussian look(这只是显示我期望的直方图的示例)
  2. 在我绘制的图中,垃圾箱不是连续的,这意味着2个垃圾箱之间存在间隙。在绘制它们时,我希望2个装箱之间没有间隙。

我想知道如何完成这两项任务。

谢谢

1 个答案:

答案 0 :(得分:0)

鉴于此数据不是正态分布的,因此您将很难获得想要的“高斯外观”。

使用size列作为计数是最接近链接的“高斯外观”(如果这完全可以解释您的数据)。

import matplotlib.pyplot as plt
from io import StringIO
import pandas as pd

plt.style.use('seaborn')

data = pd.read_fwf(StringIO("""
20
28
38
42
42
42
44
124
176
192
194
216
228
316
318
2048
2714
2802
4128
4186
6910
9313
10816
16560
20704
34766
91022
"""), names=['size'], header=None)

plt.bar(range(data['size'].size), data['size'], width=1)
plt.xlabel('bin')
plt.ylabel('size')

enter image description here