4

プロットしたいフロートの並べ替えられた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]を示す目盛りです。 ここに画像の説明を入力 はっきりしない場合は申し訳ありません。

4

1 に答える 1

8

パーセンタイル ランクを表示するように 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()

ここに画像の説明を入力

于 2013-08-09T19:22:17.643 に答える