2017-10-04 17 views
0

昨日からこれを修正しようとしていて、解決策を見つけることができませんでした。異なるPandasデータフレームの列を反復するループを使用してMatplotlibサブプロットを作成する

12の異なる実験のデータに対して12のpandas Dataframes(exp_1 - exp_12という名前)を作成しました。列名はすべてのDataframesで同じです。私はすべての実験で1行につき4つのプロットを持つ12のサブプロット(12x4)を持つプロットを作成したい。

これまでのところ、とても良いです。

fig, axs = plt.subplots(nrows = 12, ncols=4, figsize = (15,27)) 
sns.regplot('MecA_SP', 'MecA_MP', data=exp_3, color ='blue', ax=axs[0,0]) 
sns.regplot('blaOXA_SP', 'blaOXA_MP', color ='lime', data=exp_3, 
ax=axs[0,1]) 
sns.regplot('Aph3_SP', 'Aph3_MP', data=exp_3, color = 'deeppink', 
ax=axs[0,2]) 
sns.boxplot(data=exp_3, orient ='h', color ='darkviolet', ax=axs[0,3]) 
fig.tight_layout() 
plt.show() 

しかし、私は、私は手動でする必要がないようにループを使用して、これらのサブプロットを作成しようとしている:私は現在、このコードを使用しています、うまく作品をプロット(私はここ4つのプロットにそれを短縮しました)各Dataframeごとにサンプル名を入力してください。今これは私が持っているものです。

fig, axs = plt.subplots(nrows = 12, ncols=4, figsize = (14,5)) 
exps = {0: 'exp_1',1: 'exp_2',2: 'exp_3',3: 'exp_4',4: 'exp_5',5: 'exp_6', 
6:'exp_7',7: 'exp_8', 8:'exp_9',9: 'exp_10',10: 'exp_11',11: 'exp_12'} 
for x in exps : 
    sns.regplot('MecA_SP', 'MecA_MP', data=x, color ='blue', ax=axs[exps[x], 
    0]) 
    sns.regplot('blaOXA_SP', 'blaOXA_MP', color ='lime', data=x, 
    ax=axs[exps[x], 1]) 
    sns.regplot('Aph3_SP', 'Aph3_MP', data=x, color = 'deeppink', 
    ax=axs[exps[x], 2]) 
    sns.boxplot(data=x, orient ='h', color ='darkviolet', ax=axs[exps[x],3]) 
fig.tight_layout() 
plt.show() 

これは私が私のプロットは、私はループを使用しない場合のように見えますが、ちょうど手で全体のことを書いたものです: enter image description here

は誰もい私はこれをどのように解決できるか考えていますか?

+0

データはどこですか? –

+0

前の手順ですべてのデータをデータフレーム(exp_1-exp_12)に保存しました。私はここに投稿してもらいたいですか?それは多くのデータです、それで私はそれを残しました –

答えて

0

データフレーム名の辞書ではなくリストにデータフレームを保存してから、サブプロットを作成するだけです。 enumerateを使用して、プロットaxポジションのループカウントを取得してください。

exps = [exp_1, exp_2, exp_3, exp_4, exp_5, exp_6 
     exp_7, exp_8, exp_9, exp_10, exp_11, exp_12] 

fig, axs = plt.subplots(nrows = 12, ncols=4, figsize = (14,5)) 

for i, x in enumerate(exps): 
    sns.regplot('MecA_SP', 'MecA_MP', data=x, color='blue', ax=axs[i, 0]) 
    sns.regplot('blaOXA_SP', 'blaOXA_MP', data=x, color='lime', ax=axs[i, 1]) 
    sns.regplot('Aph3_SP', 'Aph3_MP', data=x, color='deeppink', ax=axs[i, 2]) 
    sns.boxplot(orient='h', data=x, color='darkviolet', ax=axs[i, 3]) 

fig.tight_layout() 
plt.show() 
plt.clf() 
plt.close() 
+0

これは働いた!どうもありがとう :) –

関連する問題