我想要绘制一个有序的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]的刻度。 对不起,如果不清楚的话。
答案 0 :(得分:6)
如果您只是想更改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()