在matplotlib中获取逆序累积直方图的技巧

9 python matplotlib histogram cumulative-frequency

我想知道是否有一个(更好的)技巧来反转matplotlib中的累积直方图.

假设我在0.0到1.0的范围内有一些分数,其中1.0是最好的分数.现在,我有兴趣绘制多少样本高于某个分数阈值.

import numpy as np
import matplotlib.pyplot as plt

d = np.random.normal(size=1000)
d = (d - d.min()) / (d.max() - d.min())

plt.hist(d, 50, histtype="stepfilled", alpha=.7)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

默认情况下,matplotlib会绘制累积直方图,如'样本数<=得分'

plt.hist(d, 50, histtype="stepfilled", alpha=.7, cumulative=True)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我真正想要的是累积直方图没有显示'样本数<=得分'但是'样本数> =得分'

我可以这样做,但那我怎么能摆脱x轴上的"减号"?

plt.hist(d-1, 50, histtype="stepfilled", alpha=.7, cumulative=True)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有更好的想法吗?

Zac*_*oss 13

很确定你可以cumulative=-1在你的函数调用中使用:

plt.hist(d, 50, histtype="stepfilled", alpha=.7, cumulative=-1)
Run Code Online (Sandbox Code Playgroud)

来自matplotlib hist()文档:

如果累积评估小于0(例如,-1),则累积方向反转.

看看这里的第三个示例图像; 我认为它做你想要的.