【问题标题】:Percentiles on X axis with matplotlib使用 matplotlib 在 X 轴上的百分位数
【发布时间】:2013-08-09 18:13:10
【问题描述】:

我有一个排序的 numpy 浮点数组,我想绘制它。我想在 x 轴上打印百分位数。我知道如何获取百分位数。

这是我所拥有的,但我不知道如何处理我的百分位数数组:

import numpy as np
import pylab as P
import matplotlib as mp

d = np.loadtxt("report.stats.sorted")
pct = mp.mlab.prctile(d, p=(0.0, 10.0, 25.0, 50.0, 75.0, 90.0, 100.0))

P.plot(d)
P.show()

该图显示了一条漂亮的曲线,但 x 轴显示了条目数的刻度。我想要的是在适当的位置显示 [0.0, 25.0, 50.0, 75.0, 100.0] 的刻度。 如果不清楚,请见谅。

【问题讨论】:

  • 绘制的数据是CDF?
  • @BrianCain 不,这是应用程序延迟测量的有序列表。我只是想以图形方式查看第一次碰撞之前的样本比例。

标签: python matplotlib


【解决方案1】:

如果您只是想更改 xticklabels 以显示百分等级,您可以将刻度的位置设置为绘制数组长度的百分比,并将标签设置为百分等级:

from matplotlib import mlab
import matplotlib.pyplot as plt
import numpy as np

d = np.sort(np.random.randint(0,1000,1000)).cumsum()

# Percentile values
p = np.array([0.0, 25.0, 50.0, 75.0, 100.0])

perc = mlab.prctile(d, p=p)

plt.plot(d)
# Place red dots on the percentiles
plt.plot((len(d)-1) * p/100., perc, 'ro')

# Set tick locations and labels
plt.xticks((len(d)-1) * p/100., map(str, p))

plt.show()

【讨论】:

    猜你喜欢
    • 2014-12-05
    • 2017-05-13
    • 2020-10-17
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    相关资源
    最近更新 更多