2016-08-02 11 views
1

私は2つの図の8つのサブプロットにファイルをプロットしようとしています。私はforループと列挙演算子を使用しています。これを行うにはaxarrayを使用します。 私は最後のステップ(axarrayを使って)がほとんどありますが、どのように終了するかについてのガイダンスが必要です。ファイルのリストを反復処理し、1つの図のサブプロットとしてプロットするにはどうしたらよいですか?

'import matplotlib.pyplot as plt 
import parse_gctoo 
import glob 
f, ax1 = plt.subplots() 

def histo_plotter(file, plot_title, ax): 
    # read in file as string 
    GCT_object = parse_gctoo.parse(file) 
    # for c in range(9): 
    #  print type(GCT_object.data_df.iloc[0][c]) 
    # computing median of rows in data_df 
    # gene_medians = GCT_object.data_df.quantile(q=0.5,axis=1) 
    # plot_title = "Gene expression levels for {}".format(cell) 
    if plot_title == "ZSPCQNORM": 
     gene_means = GCT_object.data_df.mean(axis=1) 
     #making histogram of means 
     ax.hist(gene_means) 
     plt.title("MeanGeneExpressionZSPCQNORM") 
     plt.xlabel("MedianGeneExpression") 
     plt.ylabel("Count") 
    elif plot_title == "QNORM": 
     gene_medians = GCT_object.data_df.median(axis=1) 
     #making histogram of medians 
     ax.hist(gene_medians) 
     plt.title("MedianGeneExpressionQNORM") 
     plt.xlabel("MedianGeneExpression") 
     plt.ylabel("Count") 
plt.show() 
f.savefig("hist_example1.png") 



# plt.ylim(-1, 1) 
# plt.xlim(-1,1) 

# histo_plotter("/Users/eibelman/Desktop/ZSCOREDATA- CXA061_SKL_48H_X1_B29_ZSPCQNORM_n372x978.gct.txt", "ZSPCQNORM", ax1) 
#  histo_plotter("/Users/eibelman/Desktop/NewLJP005_A375_24H_X2_B19_QNORM_n373x978.gct.txt", "QNORM", ax1) 
######### 



# Create list of x2 LJP005 cell line files 

z_list = glob.glob("/Volumes/cmap_obelix/pod/custom/LJP/roast/LJP005_[A375, A549, BT20, HA1E, HC515, HEPG2, HS578T, HT29]*X2*/zs/*ZSPCQNORM*.gct") 
q_list = glob.glob("/Volumes/cmap_obelix/pod/custom/LJP/roast/LJP005_[A375, A549, BT20, HA1E, HC515, HEPG2, HS578T, HT29]*_X2_*/*_QNORM_*.gct") 



# for loop which allows plotting multiple files in a single figure 

f, axarray = plt.subplots(2, 4) 
for n, single_q in enumerate(q_list): 
    # axarray = plt.subplot(len(q_list), 1, n+1) 
    axarray = histo_plotter(n, "QNORM", ax1) 
    # axarray[n].plot() 
plt.show() 

# f, axarray = plt.subplots(2, 4) 
# for n, single_z in enumerate(z_list): 
#  # ax = plt.subplot(len(z_list), 1, n+1) 
#  histo_plotter(single_z, "ZSPCQNORM", ax1)' 
+0

どのようなプロットですか? histo_plotterを表示できますか? 1つのプロットで複数のサブプロットを1つの図または複数の線(ヒストグラム?)にしたいですか? – story645

+0

@ story645私はhisto_plotterに追加しました。私は1つの図に複数のサブプロットが欲しい。フォーマットには申し訳ありません - 正しく設定する方法がわかりません。 – user8669

+0

@ story645あなたはそれを理解することができますか? – user8669

答えて

1

あなたはこれを試すことができます。

import matplotlib.pyplot as plt 

plt.figure() 

for n, single_q in enumerate(q_list): 
    ax = plt.subplot(len(q_list), 1, n+1) 
    GCT_object = parse_gctoo.parse(single_q) 
    gene_medians = GCT_object.data_df.median(axis=1) 
    plt.hist(gene_medians) 
    # tweak title, labels, etc. 

plt.show() 

説明する:

  • enumerate繰り返し処理をも、それぞれのインデックス(n)戻しながらアイテム(s)の上に、
  • 関数subplot(size, column, row)には、次のパラメータが必要です。sizeは、図のサブプロットの合計量で、rowcolumnは、現在のプロットの位置を決定します。 n+1は、プロットをグリッドに沿って正しい位置に置くために必要です。
  • 残りのコードを自分のデータで編集しました
+0

各ステップの内容を教えてください。それは非常に役立つだろう! – user8669

+0

私の編集を見てください! – heltonbiker

+0

ありがとうございました!なぜ4番目の線を斧で救ったのですか? – user8669

1

まず、それがループの先頭に一度plt.figure()を呼び出すには十分だ: はここに私のコードです。

第2に、subplotを正しく使用する必要があります。

典型的なコールサイン:ここでsubplot関数のドキュメントであるNROWSとncolsのを概念的 に使用される

サブプロット(NROWS、ncolsの、plot_number)はNROWSに図形を分割*サブ軸をNCOLS 、および plot_numberは、この 関数が概念上のグリッド内で作成する特定のサブプロットを識別するために使用されます。 plot_numberは から始まり、最初に行を増分し、最大でnrows * ncolsになります。

EDIT

あなたは、各反復で、各ファイルのための新たな姿をしたい場合は、引数なしでplt.figure()を呼び出す必要があります。

+0

ありがとう、@IsraelUntermanしかし私はファイルの私のリストを反復し、それぞれを1つの図のサブプロットとしてプロットするforループを作成したいと思います。あなたはこれを行う方法を知っていますか? – user8669

+0

@ user8669私は各ファイルの新しい図のために私の答えを編集しました。 –

関連する問題