2010-05-24 14 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

वाह, इस कोड फाइस्टोस डिस्क – 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

संबंधित मुद्दे