在matplotlib中叠加直方图

时间:2014-12-28 19:42:19

标签: python matplotlib histogram

我知道如何制作直方图,但我想重现这张图片:

Imgur

原文由Andrew Karplus等人撰写的PNAS(期刊)论文。 2011。

我有自己的直方图中的以下图像:

我有以下问题:

1)如何在平滑直方图的情况下启动绘图?

2)如何在我的情节(第2张图片)中叠加但不扭曲颜色,省略外部阴影中内部点以及产生干净叠加的点?

1 个答案:

答案 0 :(得分:1)

您可以使用fill_between

import numpy as np
import matplotlib.pyplot as plt

def gaussian(x, x0, y0, variance):
    return y0 * np.exp(-(x - x0) ** 2 / variance)

x = np.linspace(150, 210, 100)
plt.fill_between(x, 0, gaussian(x, 180, 5000, 30), color='red', zorder=0)
plt.fill_between(x, 0, gaussian(x, 181, 4500, 10), color='blue', zorder=1)

plt.show()

产量

enter image description here


上面我使用gaussian来生成数据的替代品;您可以用实际的直方图值替换gaussian(...)