2017-05-13 2 views
0

私は80の変数を持つデータセットを持っています。 Matplotlibで20 X 4 GridSpecの作成を自動化する関数を作成することに興味があります。各サブプロットは、データ中の80個の変数のそれぞれについて、ヒストグラムまたはバープロットを含む。最初のステップとして、私は必要なプロットのレイアウトを含む2つの関数を作成しました(私はそれらを「カウント」と「ヒストグラム」と呼んでいます)。どちらも個々の変数でテストしたときに機能します。次のステップとして、データ型がオブジェクトかどうかをテストするために条件文をループし、新しいサブプロットとしてデータ型に基づいて適切な関数を呼び出す、列名を取る関数を作成しようとしました。ここで私がこれまで持っているコードは次のとおりです。Matplotlib GridSpecをプロットする関数を作成するのに助けが必要です

たちはサブプロット仕様のために必要となる座標のリストを作成します:

A = np.arange(21) 
B = np.arange(4) 
coords = [] 

for i in A: 
    for j in B: 
     coords.append([A[i], B[j]]) 

#Create the gridspec and layout the figure 
import matplotlib.gridspec as gridspec 
fig = plt.figure(figsize=(12,6)) 
gs = gridspec.GridSpec(2,4) 

#Function that relies on what we've done above: 
def grid(cols=['MSZoning', 'LotFrontage', 'LotArea', 'Street', 'Alley']): 
    for i in cols: 
     for vals in coords: 
      if str(train[i].dtype) == 'object': 
       plt.subplot('gs'+str(vals)) 
       counts(cols) 
      else: 
       plt.subplot('gs'+str(vals)) 
       histogram(cols) 

しようとし、このコードがエラーを返した場合:

とValueError:単一の引数にサブプロットは3桁の整数でなければなりません

視覚化を助ける目的で、私が達成したいと思っているものを、私は作成したヘルパー関数を使って行ごとにコーディングしたスクリーンショットを添付します。回避しようとしています: enter image description here

誰も私が私が間違っているつもり場所を見つけ出す手助けすることはできますか?私は何かアドバイスをいただければ幸いです。ありがとうございました!

答えて

0

plt.subplot('gs'+str(vals))が動作しないことができるライン。それはエラーがあなたに伝えるものでもあります。 matplotlibのGridSpec tutorialからわかるように

、それは

ax = plt.subplot(gs[0, 0]) 

だからあなたの場合には、あなたがまたする必要が

ax = plt.subplot(gs[vals[0], vals[1]]) 

マインドとしてリストからの値を使用することができますする必要がありますgridspecがgs = gridspec.GridSpec(n,m)と定義されている場合は、coordsリストにn*m要素が必要であることを確認してください。

関連する問題