2017-08-20 2 views
0

私はLISTに 'samples'という名前があります.2つの異なるフォルダからこのLISTにいくつかの画像を読み込んでいます。次に、このリストをDataFrameに変換し、2D散布図にプロットします。私は散布図にFolder1からのすべてのコンテンツを赤色に、Folder2からのすべてのコンテンツを青色に表示します。どうすればこれを達成できますか?私のコードは以下の通りです:データの起点に基づいた散布図の色が異なる

samples = [] 
    Folder1 = glob.iglob('/home/..../Folder1/*.png') 
    Folder2 = glob.iglob('/home/..../Folder2/*.png') 

    for fname in Folder1: 
     img = misc.imread(fname) 
     samples.append((img[::2, ::2]/255.0).reshape(-1)) 

    for fname in Folder2: 
     img = misc.imread(fname) 
     samples.append((img[::2, ::2]/255.0).reshape(-1)) 

    samples = pd.DataFrame(samples) 

    def do_ISO(df): 
     from sklearn import manifold 
     iso = manifold.Isomap(n_neighbors=6, n_components=3) 
     iso.fit(df) 
     A = iso.transform(df) 
     return A 

    def Plot2D(T, title, x, y): 
     fig = plt.figure() 
     ax = fig.add_subplot(111) 
     ax.set_title(title) 
     ax.set_xlabel('Component: {0}'.format(x)) 
     ax.set_ylabel('Component: {0}'.format(y)) 
     x_size = (max(T[:,x]) - min(T[:,x])) * 0.08 
     y_size = (max(T[:,y]) - min(T[:,y])) * 0.08 
     ax.scatter(T[:,x],T[:,y], marker='.',alpha=0.7) 

    Plot2D(do_ISO(samples), 'ISO_Chart', 0, 1) 

    plt.show() 

答えて

1

あなたが作業しているアレイを見ずに言うのはかなり難しいです。 do_ISO()関数の結果をプロットすると、sklearn.manifold.Isomap.transform()を使って配列が作成されます。

この機能は、配列内の要素の順序を保持しますか? もしそうなら、物事はかなり簡単かもしれません。最初にFolder1からFolder2までのすべての画像を塗りつぶしたら、Folder1のアイテム数を数え、その数に基づいて2で配列を分割することができます(例えばnbFilesFolder1)。 scatterへの2回の呼び出し:

ax.scatter(T[:nbFilesFolder1,x],T[:nbFilesFolder1,y], marker='.',alpha=0.7, c='red') 
ax.scatter(T[nbFilesFolder1:,x],T[nbFilesFolder1:,y], marker='.',alpha=0.7, c='blue') 
+0

あなたはただそれを釘付けにしました。これはまさに私が望んでいたものです。はい、Folder1には72個のアイテムがあり、次にFolder2には12個のアイテムが含まれています。そして私はあなたのテクニックを使って配列を分割してプロットしました。ありがとう、本当にありがとう。私のような新しくて若いデータアナリストに動いてもらうように動かすのはあなたたちです。 –

関連する問題