мини-матрица рассеяния с использованием вложенных графиков в качестве цикла

#python-3.x #seaborn

#python-3.x #сиборн

Вопрос:

У меня есть набор данных с 25 столбцами, и я хотел изучить точечные диаграммы. Я впервые посмотрел на это с помощью Seaborn scatterplot() , но это слишком запутанно, и слишком много диаграмм, чтобы разобраться во всем этом. Поэтому вместо этого я хотел повторить один столбец по всем столбцам. Я создал этот простой цикл:

 for col in ds_num.columns:
    plt.figure()
    sns.scatterplot(x='initial_term',y=col,hue='logo_renewal',data=ds_num)
    plt.show()
  

Это сработало, но придало ему форму одного столбца. Я бы хотел, чтобы он отображал несколько в каждой строке, поэтому я попробовал это вместо:

 for idx, col in enumerate(ds_num.columns):
    fig = plt.figure(figsize=(20,16))
    ax[idx 1] = fig.add_subplot(5,5,idx 1)
    sns.scatterplot(x='initial_term',y=col,hue='logo_renewal',data=ds_num,ax=ax[idx])
    plt.show()
  

Но теперь я получил ошибку типа: объект ‘AxesSubplot’ не поддерживает назначение элемента

Есть предложения? Спасибо

Ответ №1:

Нашел ответ с помощью вложенных графиков:

 fig, axs = plt.subplots(5,5,figsize=(20,20))
cols = ds_num.columns
for ax, col in zip(axs.flatten(),cols):
    sns.scatterplot(x='initial_term',y=col,hue='logo_renewal',data=ds_num,ax=ax,legend=False)
    plt.tight_layout()
  

Обратите внимание, что я удалил легенду, поскольку она занимала слишком много места, это, конечно, не обязательно