Рисунок перекрывается при добавлении субплота с использованием цикла for - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь построить три фрейма данных в трех столбцах, используя matplpotlib. Я строю каждый столбец DF как вспомогательный участок в соответствующем столбце рисунка. Но сюжет, похоже, пересекается друг с другом. Не уверен, что происходит не так. Пожалуйста, помогите мне найти проблему. Благодарю.

Я добавил код ниже, я пытался добиться того, что я упомянул выше. Я не определил количество строк и столбцов в подзаговоре, так как я хотел создать на основе количества столбцов в DF. Затем я использовал функцию add_subplot для добавления каждого из них в цикл. Но субплоты перекрываются в выводе. Я пробовал fig.tightlayout, основываясь на предложениях из другого поста, но я получил UserWarning: непрямой_применение: не указано число строк в спецификациях подзаговоров, кратных друг другу

fig = plt.figure()

#looping through each DF in a dict
for df_count, df_name in enumerate(df_dict):
    df = df_dict[df_name]

    #looping through column in the DF
    for col_count, col in enumerate(df_dict[df_name]):
        if col != "VAR":
            print (col, col_count )
            ax = fig.add_subplot(col_count, df_count + 1, 1)
            ax.plot(df[col], df["CATEGORY"])

fig.tight_layout()
plt.savefig('foo.png')

enter image description here

1 Ответ

0 голосов
/ 11 ноября 2019

Основываясь на комментарии, предоставленном @ImportanceOfBeingErnest, я изменил свой код, как показано ниже, и получил ожидаемый график. Таким образом, я настраиваю / добавляю субплот к позициям индивидуации. Этот ответ может быть полезен для людей, которые хотят построить подзаговоры, циклически перебирая данные и ставя график в нужное положение.

fig = plt.figure(figsize=(10,10))
subplot_count_a = 0
#looping through each DF in a dict
for df_count, df_name in enumerate(df_dict):
    subplot_count_a += 1
    subplot_count = subplot_count_a
    df = df_dict[df_name]
    #looping through column in the DF
    print(df_name)
    for col in df:
        if col != "VAR" and col != "CATEGORY":
            print (f"({col}, {len(df.columns) - 2}, {len(df_dict)} , {subplot_count})")
            ax = fig.add_subplot(len(df.columns) -2 , len(df_dict) , subplot_count)
            ax = sns.scatterplot(x=col, y="CATEGORY", hue="CATEGORY", data=df, legend=False)
            ax.set_ylabel('')    
            ax.set_xlabel('')
            subplot_count += 3
    fig.tight_layout()
    plt.savefig('foo.png')

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...