如何在同一行上绘制多个图?

时间:2018-05-27 09:28:04

标签: python pandas matplotlib plot

我使用的是经典kaggle house price dataset。我想针对bedrooms目标绘制每个要素列(bathroomssqft_livingprice等)以检查任何相关性,但我想说每行3或4个图,使图更紧凑。

到目前为止我做了什么:

import pandas as pd
import matplotlib.pylab as plt
import seaborn as sns;
sns.set_context('poster')
sns.set_style('darkgrid')

df = pd.read_csv('kc_house_data.csv')
cols = [i for i in list(df.columns) if i not in ['id','price']]
for col in cols:
    fig, ax = plt.subplots(figsize=(12,8))
    df.plot(kind='scatter', x=col, y='price', ax=ax, s=10, alpha=0.5)
    plt.show()

所以,我正在使用内置的pandas绘图功能,但这会将每个数字绘制成一个新行。

我想要的是pandas scatter matrix plot,其中多行(在本例中为4)图出现在一行上。 (我不需要绘制沿对角线的分布,如下所示)。

enter image description here

如何使用pandas scatter_matrix功能或其他一些python绘图功能在一行中创建多个绘图?

很高兴:

  1. 标记轴

  2. 每个要素与每个地块上显示的price之间的相关性

1 个答案:

答案 0 :(得分:0)

每次迭代都不要创建新的子图。相反,创建一个包含多个列的子图,并将每个图放在其自己的轴上,并将ax参数放到pd.plot()

fig, axes = plt.subplots(1, len(cols), figsize=(12,8), squeeze=False)

for i, col in enumerate(cols):
    df.plot(kind='scatter', x=col, y='price', ax=axes[0, i], s=10, alpha=0.5)

plt.show()