Как показать plt.axhline в обоих подзаголовках из цикла for в python 3

#python #pandas

Вопрос:

Я начинающий пользователь Python 3 и хотел бы спросить, можете ли вы, ребята, помочь мне разобраться в этой вещи. Приведенный ниже код предназначен для создания двух подстрок параметров данных на страницу pdf, и я использую функцию «axhline» для построения границ данных каждого параметра. Однако, когда я использую его внутри цикла for, только у второго подзаголовка были ограничения на данные — первый всегда не отображается. Я полагаю, что происходит, когда axhline работает по одному за раз в цикле for? Вместо того, чтобы иметь его в обоих подзаголовках к концу цикла for? Пожалуйста, загляните в мой код ниже:

 fig, ax = plt.subplots(2, 1)
    ax = ax.flatten()
    for i, col in enumerate(hib_list[0:2]):
        ax1 = sns.boxplot(x=lotid, y=cc_df[col], ax=ax[i], hue=temp)
        ax1.set_ylabel(col,fontsize=8)
        ax1.get_legend().remove()
        plt.tight_layout(pad=1.0)
        #Below line is to set data limits
        plt.axhline(y=500, color='r', linestyle='--')
    pdf.savefig()
    plt.close()
 

Выходная цифра, как показано ниже:

Ответ №1:

Ниже приведена исправленная версия вашего кода. Вы можете установить один раз за цикл ax=axes[i] , а затем использовать ax для всех операций. plt.(…) работает только на объекте с последними нанесенными осями.

 fig, axes = plt.subplots(2, 1)
axes = axes.flatten()
for i, col in enumerate(hib_list[0:2]):
    ax = axes[i]
    sns.boxplot(x=lotid, y=cc_df[col], ax=ax, hue=temp)
    ax.set_ylabel(col,fontsize=8)
    ax.get_legend().remove()
    #Below line is to set data limits
    ax.axhline(y=500, color='r', linestyle='--')
plt.tight_layout(pad=1.0)
pdf.savefig()
plt.close()