2016-04-04 8 views
0

これは私がこれまで試みたものであるMatplotlib、配列をイメージとして表現する方法は?

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() 

私は(50,100)アレイおよび各要素が数値.IがIが得array.But表すであろう画像を持っていると思います(範囲1200から5400)を有していますこの enter image description here

適切な画像を取得するためにはどうすればよいですか?

+0

これはどのようにあなたが望む出力の違いは何ですか? – Reti43

+0

これは有効なヒートマップのようです...アレイの要素があなたに別のイメージを与えてくれると確信していますか? 2行目または3行目のように見えますが、配列の値は5000以上です。そうではありませんか? – gariepy

+0

@gariepyはい、そうです。それでヒートマップを変えなければならないのですか? –

答えて

2

私にはbase.txtのデータがありません。
しかし、問題をシミュレートするために、1500 to 5500の間に乱数を作成し、50 x 100 numpy arrayを作成しました。あなたのデータと要件に近いと思います。

次に、プロットコードごとにデータをプロットしました。 私は配列の真の表現を得ています。 これが役立つかどうかを確認してください。

デモコード

#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() 

プロット enter image description here

関連する問題