2013-03-27 5 views
1

그래서이 있다고 플롯 :정렬 파이썬에서 히스토그램의 값이 다음과 같은 그들을

[1,5,1,1,6,3,3,4,5,5,5,2, 5]

수는 : 1-3 2-1 3-2 4-1 이제 5-5 6-1

, 나는 정렬 히스토그램과 같은 도표를 인쇄하고 싶었다 x 축에, 다음과 같이 :

다음과 같이 : 1 2 3 총 수를 기준으로 정렬 4 5 6

그러나 : 2 4 6 3 1 5

저를 도와주세요! 덕분에 ...

나의 현재 플로팅 코드는 다음과 같습니다

plt.clf() 
    plt.cla() 
    plt.xlim(0,1) 
    plt.axvline(x=.85, color='r',linewidth=0.1) 
    plt.hist(correlation,2000,(0.0,1.0)) 
    plt.xlabel(index[thecolumn]+' histogram') 
    plt.ylabel('X Data') 

    savefig(histogramsave,format='pdf') 
+1

이것을 성취하려고 노력하고, 그것이 잘못 되었습니까? 현재 코드를 게시하면 사람들이 도울 수 있습니다. 그렇듯이 모든 것을 작성해야합니다. –

+0

plt.clf() \t \t plt.cla() \t \t plt.xlim (0,1) \t \t plt.axvline (X = 0.85, 컬러 = 'R', 선폭 = 0.1) \t \t plt.hist (상관, 2000, (0.0,1.0)) \t \t plt.xlabel (인덱스 [thecolumn] 히스토그램 '+) \t \t plt.ylabel ('값 ') \t \t \t \t savefig을 (histogramsave , format = 'pdf') –

+0

해당 int를 편집하는 것이 가장 좋습니다 o 귀하의 질문은 읽을 수 있습니다. –

답변

3

사용 collections.Counter는 사용자 정의 키 기능을 전달 sorted으로 항목을 정렬 :

>>> from collections import Counter 
>>> values = [1,5,1,1,6,3,3,4,5,5,5,2,5] 
>>> counts = Counter(values) 
>>> for k, v in sorted(counts.iteritems(), key=lambda x:x[::-1]): 
>>>  print k, v * 'x' 

2 x 
4 x 
6 x 
3 xx 
1 xxx 
5 xxxxx 
+0

이봐 요, 당신이 인쇄하는 것과 같은 방식으로 히스토그램을 플롯해야합니다. 어떻게 내가 그걸 할 수 있는지? –

+0

@gran_profaci 위 코드에서 numpy 배열로 키와 값 (k, v)를 취할 수 있으며 matplotlib.pyplot.scatter (k, v)를 사용하여 산점도를 만들 수 있습니다. – viper

0

스티븐이 올바른 생각을 가지고있다. 콜렉션 라이브러리는 해제 할 수 있습니다.

당신이 다른 손으로 작업을 수행 할 경우이 같은 것을 만들 수 아래 예에서와 같이,

data = [1,5,1,1,6,3,3,4,5,5,5,2,5] 
counts = {} 
for x in data: 
    if x not in counts.keys(): 
     counts[x]=0 
    counts[x]+=1 

tupleList = [] 
for k,v in counts.items(): 
    tupleList.append((k,v)) 

for x in sorted(tupleList, key=lambda tup: tup[1]): 
    print "%s" % x[0], 
print 
0

당신은 계산하고 분류해야합니다 : 당신이 어떻게했는지

>>> from collections import defaultdict 
>>> l = [1,5,1,1,6,3,3,4,5,5,5,2,5] 
>>> d = defaultdict(int) 
>>> for e in l: 
...  d[e] += 1 
... 
>>> print sorted(d,key=lambda e:d[e]) 
[2, 4, 6, 3, 1, 5] 
관련 문제