2016-04-04 11 views
0

Dies ist, was ichMatplotlib, wie man Array als Bild darstellt?

bisher versucht haben
import itertools 
import numpy as np 
import matplotlib.pyplot as plt 

with open('base.txt','r') as f: 
    vst = map(int, itertools.imap(float, f)) 

v1=vst[::3] 
print type(v1) 

a=np.asarray(v1) 
print len(a) 
a11=a.reshape(50,100) 

plt.imshow(a11, cmap='hot') 
plt.colorbar() 
plt.show() 

Ich habe (50,100) Array und jedes Element Zahlenwert (Bereich 1200-5400) .Ich möchte die Bild haben, die darstellen würde array.But Ich habe dies enter image description here

Was soll ich ändern, um das richtige Bild zu bekommen?

+0

Wie dies aus der Ausgabe, die Sie unterscheidet sich wünschen? – Reti43

+0

Dies sieht wie eine gültige Heatmap aus ... Sind Sie sicher, dass die Elemente des Arrays Ihnen ein anderes Bild geben sollten? Es sieht so aus, als ob nach der 2. oder 3. Reihe die Werte des Arrays streng über 5000 liegen. Ist das nicht der Fall? – gariepy

+0

@gariepy Ja, sie sind. Dann bedeutet es, ich sollte eine Heatmap ändern? –

Antwort

2

Ich habe keine Daten von base.txt.
Um jedoch Ihr Problem zu simulieren, erstellte ich Zufallszahlen zwischen 1500 to 5500 und erstellt eine 50 x 100 numpy array, die meiner Meinung nach in der Nähe Ihrer Daten und Anforderungen ist.

Dann habe ich einfach die Daten nach Ihrem Plot-Code geplottet. Ich bekomme eine echte Darstellung des Arrays. Sehen Sie, ob das hilft.

Demo-Code

#import itertools 
import numpy as np 
from numpy import array 
import matplotlib.pyplot as plt 
import random 


#Generate a list of 5000 int between 1200,5500 
M = 5000 
myList = [random.randrange(1200,5500) for i in xrange(0,M)] 

#Convert to 50 x 100 list 
n = 50 
newList = [myList[i:i+n] for i in range(0, len(myList), n)] 

#Convert to 50 x 100 numpy array 
nArray = array(newList) 
print nArray 

a11=nArray.reshape(50,100) 
plt.imshow(a11, cmap='hot') 
plt.colorbar() 
plt.show() 

Plot enter image description here

Verwandte Themen