сайтами - парсинг сайтов python




Как бы я перебирал список файлов и составлял их как подзаголовки на одной фигуре? (2)

Во-первых, достаточно вызвать plt.figure() один раз в начале цикла.

Во-вторых, вам нужно правильно использовать subplot . Вот документ функции subplot :

Типичная сигнатура вызова:

subplot (nrows, ncols, plot_number) В тех случаях, когда nrows и ncols используются для условного разделения фигуры на вспомогательные оси nrows * ncols, а plot_number используется для идентификации конкретного подзаголовка, который эта функция должна создавать внутри условной сетки. plot_number начинается с 1, увеличивается по первым строкам и имеет максимум nkn * ncols.

РЕДАКТИРОВАТЬ

Если вы хотите получить новую цифру для каждого файла, то на каждой итерации вы должны вызвать plt.figure() без аргументов.

Я пытаюсь построить файлы на 8 подзаголовков для двух цифр. Я использую цикл for и перечисляю оператор, а также axarray для этого. Я почти на последнем шаге (с axarray), но мне нужно знать, как его закончить. Вот мой код:

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

Вы можете попробовать следующее:

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 итерации по элементам ( s ), а также возвращать их индексы ( n );
  • функция subplot(size, column, row) требует этих параметров: size - это общее количество подзаговоров на рисунке, а row и column определяют позицию для текущего графика. n+1 необходимо, чтобы поместить график в правильное положение вдоль сетки графика;
  • Я отредактировал остальную часть кода с вашими собственными данными






plot