【发布时间】:2018-11-23 11:10:53
【问题描述】:
如果我使用以下代码绘制图,它可以工作,并且我可以在一行中看到所有子图。我可以专门将 cols 的数量分成三个或两个并显示它们。但是我有 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()
不知道我错过了什么。
【问题讨论】:
-
第一个调用
pairplot的方法似乎是可取的;除非你有理由不使用它。我不明白那个原因。如果您介意更详细地解释它,它会更容易提供帮助。此外,提供可运行的示例代码有助于给出答案。
标签: python pandas matplotlib seaborn