Подплот и разделить ось Y в сетке 4 на n - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь определить функцию, которая может составлять графики в сетке 4 на n.Приведенный ниже код работает, но я хочу, чтобы субплоты разделяли ось y, что, я думаю, я (определенно?) Должен использовать метод, упомянутый в в этом посте .Однако из-за того, что я делаю сетку 4 на n и выполняю цикл, назначение имени каждому участку кажется мне проблематичным.Есть идеи?Заранее спасибо!

В настоящее время моя функция выглядит так:

def make_plots(df, name_list):
    n = len(name_list)
    j = 1
    plt.figure(1, dpi=500, figsize=(10,10/4*n/4))
    for i in name_list:
        plt.subplot(n/4,4,j)
        plt.title('Table {}: {}'.format(j,i), size='xx-small')
        plt.grid(False)
        a = [i for i in list(df[i]) if i>0]
        plt.hist(a,bins=7,rwidth=0.7)
        plt.axvline(x=np.mean(a), color='red')
        j+=1
    plt.tight_layout(pad=0.2,h_pad=0.2, w_pad=0.2)
    plt.show()

1 Ответ

0 голосов
/ 22 мая 2018

Вы можете сначала создать фигуру и сюжеты и использовать аргумент sharey = True.Затем используйте zip, чтобы перебрать и массив name_list, и массив axes одновременно:

def make_plots(df, name_list):
    n = len(name_list)
    j = 1
    fig, axes = plt.subplots(n/4, 4, sharey=True, figsize=(10, 10/4*n/4))

    for i, ax in zip(name_list, axes.flatten()):

        ax.set_title('Table {}: {}'.format(j,i), size='xx-small')
        ax.grid(False)
        a = [i for i in list(df[i]) if i>0]
        ax.hist(a,bins=7,rwidth=0.7)
        ax.axvline(x=np.mean(a), color='red')
        j+=1
    plt.tight_layout(pad=0.2,h_pad=0.2, w_pad=0.2)
    plt.show()
...