我使用的是经典kaggle house price dataset。我想针对bedrooms
目标绘制每个要素列(bathrooms
,sqft_living
,price
等)以检查任何相关性,但我想说每行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)图出现在一行上。 (我不需要绘制沿对角线的分布,如下所示)。
如何使用pandas scatter_matrix
功能或其他一些python绘图功能在一行中创建多个绘图?
很高兴:
标记轴
每个要素与每个地块上显示的price
之间的相关性
答案 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()