目前我已经创建了一个for循环,循环遍历我的数组并将结果转储到PDF上但是我在将它与heapq.nlargest结合时遇到了麻烦。 我希望将我的直方图与每个带有pandas的数组的前10%得分重叠。
目前,代码是
x = list(df1.columns.values)
fig = plt.figure(num=None, figsize=(30, 200), dpi=80, facecolor='w', edgecolor='w')
for i in range(6):#(len(df1.ix[i])):
val= x[i]
y = df1.iloc[:,i]
yy = heapq.nlargest(len(df1.iloc[:,i])//10, df1.iloc[:,i])
ax = fig.add_subplot(len(df1.ix[0]),3,i+1)
plt.hist(y, bins=np.logspace(-4, 3, 100))
plt.hist(yy, bins=np.logspace(-4, 3, 100))
plt.savefig('D:/All Documents/Frequency_Distribution_Scores.pdf')
当我介绍
时yy = heapq.nlargest(len(df1.iloc[:,i])*p//100, (df1.iloc[:,i]))
plt.hist(yy, bins=np.logspace(-4, 3, 100))
似乎只绘制了我所有图形中第一个数组的前10%值,而不是找到每个数组的前10%。
任何人都有任何指示? 干杯
答案 0 :(得分:0)
解决了!
x = list(df1.columns.values)
fig = plt.figure(num=None, figsize=(30, 200), dpi=80, facecolor='w', edgecolor='w')
for i in range(len(df1.ix[i])):
val= x[i]
y = df1.iloc[:,i]
yy_s = np.sort(df1.iloc[:,i])[::-1]
yy_s_trim0 = yy_s[np.where(yy_s > 0)]
yy_10 = yy_s_trim0[0:(len(yy_s_trim0)/10)]
ax = fig.add_subplot(len(df1.ix[0]),3,i+1)
plt.hist(y, bins=np.logspace(-4, 3, 100))
plt.hist(yy_10, bins=np.logspace(-4, 3, 100))