2010-05-24 3 views
10

나는 다음과 같은 코드를 사용하기 matplotlib와 혼란 매트릭스 음모를 꾸미고 있어요 :혼란 매트릭스 (파이썬 /하기 matplotlib)

from numpy import * 
import matplotlib.pyplot as plt 
from pylab import * 

conf_arr = [[33,2,0,0,0,0,0,0,0,1,3], [3,31,0,0,0,0,0,0,0,0,0], [0,4,41,0,0,0,0,0,0,0,1], [0,1,0,30,0,6,0,0,0,0,1], [0,0,0,0,38,10,0,0,0,0,0], [0,0,0,3,1,39,0,0,0,0,4], [0,2,2,0,4,1,31,0,0,0,2], [0,1,0,0,0,0,0,36,0,2,0], [0,0,0,0,0,0,1,5,37,5,1], [3,0,0,0,0,0,0,0,0,39,0], [0,0,0,0,0,0,0,0,0,0,38] ] 

norm_conf = [] 
for i in conf_arr: 
    a = 0 
    tmp_arr = [] 
    a = sum(i,0) 
    for j in i: 
     tmp_arr.append(float(j)/float(a)) 
    norm_conf.append(tmp_arr) 

plt.clf() 
fig = plt.figure() 
ax = fig.add_subplot(111) 
res = ax.imshow(array(norm_conf), cmap=cm.jet, interpolation='nearest') 
cb = fig.colorbar(res) 
savefig("confmat.png", format="png") 

을하지만 숫자를 표시하는 혼란 매트릭스에 원하는 이 그래픽 (오른쪽)이 좋아요. 그래픽에 conf_arr을 어떻게 표시 할 수 있습니까?

confusion matrix

+0

와우,이 코드를 예를 들어, 숫자를 쓸 것입니다 코드에 다음 줄을 삽입 (처음과 마지막 라인 내 라인을 삽입 할 위치를 표시하는 코드에서 있습니다 주) Phaistos 디스크처럼 읽을 수 있습니다. – siamii

답변

10

text을 사용하여 임의의 텍스트를 플롯에 넣을 수 있습니다.

res = ax.imshow(array(norm_conf), cmap=cm.jet, interpolation='nearest') 
for i, cas in enumerate(conf_arr): 
    for j, c in enumerate(cas): 
     if c>0: 
      plt.text(j-.2, i+.2, c, fontsize=14) 
cb = fig.colorbar(res) 

matrix with numbers

+0

해결책 주셔서 감사합니다. 그것은 내가 필요한 것을 정확하게합니다. 건배! – Pinkie

1

난 정말이 주석을 사용하는 것이었다 일을 볼 수있는 유일한 방법. 다음 줄을 입력하십시오 :

for i,j in ((x,y) for x in xrange(len(conf_arr)) 
      for y in xrange(len(conf_arr[0]))): 
    ax.annotate(str(conf_arr[i][j]),xy=(i,j)) 

그림을 저장하기 전에. 그것은 숫자를 더하는 것이지만, 원하는대로 숫자의 크기를 얻는 방법을 알아 보도록하겠습니다.

+0

굉장! 감사! – Pinkie