Сюжетные участки с использованием морского парного участка - PullRequest
0 голосов
/ 23 ноября 2018

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

regressionCols = ['col_a', 'col_b', 'col_c', 'col_d', 'col_e']
sns.pairplot(numerical_df, x_vars=regressionCols, y_vars='price',height=4, aspect=1, kind='scatter')
plt.show() 

Код с использованием цикла приведен ниже.Тем не менее, я не вижу ничего визуализированного.

 nr_rows = 4
 nr_cols = 4

 li_cat_cols = list(regressionCols)
 fig, axs = plt.subplots(nr_rows, nr_cols, figsize=(nr_cols*4,nr_rows*4), squeeze=False)

 for r in range(0, nr_rows):
      for c in range(0,nr_cols):  
         i = r*nr_cols+c

         if i < len(li_cat_cols):
             sns.set(style="darkgrid")
             bp=sns.pairplot(numerical_df, x_vars=li_cat_cols[i], y_vars='price',height=4, aspect=1, kind='scatter')
             bp.set(xlabel=li_cat_cols[i], ylabel='Price')
 plt.tight_layout()    
 plt.show()

Не уверен, что мне не хватает.

1 Ответ

0 голосов
/ 23 ноября 2018

Я думаю, что вы не связали каждое из своих пространств подплота в матричном графике с точечными диаграммами, сгенерированными в цикле.

Может быть, это решение с внутренними графиками панд может быть правильным для вас: Например,

1.Позволяет просто определить пустой кадр данных панд.

numerical_df = pd.DataFrame([])

2.Создайте несколько случайных функций и цену в зависимости от них:

numerical_df['A'] = np.random.randn(100)
numerical_df['B'] = np.random.randn(100)*10 
numerical_df['C'] = np.random.randn(100)*-10
numerical_df['D'] = np.random.randn(100)*2
numerical_df['E'] = 20*(np.random.randn(100)**2)
numerical_df['F'] = np.random.randn(100)
numerical_df['price'] = 2*numerical_df['A'] +0.5*numerical_df['B'] - 9*numerical_df['C'] + numerical_df['E'] + numerical_df['D']

3.Определите количество строк и столбцов.Создайте пространство подзаговоров с помощью nr_rows и nr_cols.

nr_rows = 2 
nr_cols = 4
fig, axes = plt.subplots(nrows=nr_rows, ncols=nr_cols, figsize=(15, 8))
for idx, feature in enumerate(numerical_df.columns[:-1]):
    numerical_df.plot(feature, "price", subplots=True,kind="scatter",ax=axes[idx // 4,idx % 4])

4.Перечислите каждый элемент в кадре данных и построите график рассеяния с ценой:

for idx, feature in enumerate(numerical_df.columns[:-1]):

    numerical_df.plot(feature, "price", subplots=True,kind="scatter",ax=axes[idx // 4,idx % 4])

, где axes[idx // 4, idx % 4] определяет местоположение каждого графика рассеяния в матрице, которую вы создаете в (3.)

Итак, мыполучил матричный график:

матрица рассеяния

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