Python-plt.subplot(),在for循环中创建的绘图

时间:2018-07-24 13:55:18

标签: python-3.x matplotlib seaborn subplot

我在for循环中创建以下图:

cat_var={}
categories=['symboling','fuel-type','make']

for x in categories:
    cat_var[x]=df[x].unique()

for key in cat_var.keys():
    plt.figure(figsize=(10,10))
    for value in cat_var[key]:
        subset= df[df[key] == value]
        sns.distplot(subset['price'], hist = False, kde = True,kde_kws = {'linewidth': 3},label = value) 
    plt.legend(prop={'size': 16}, title = key)
    plt.title('Price distribution per %s level'% key)
    plt.xlabel('Price')
    plt.ylabel('Density')
    plt.show()

它正在工作,但是我想绘制它们以便它们全部显示在同一行上,而现在我将它们全部显示在同一列上。我当时正在考虑使用类似的内容:

fig, axes = plt.subplots(1, 3,figsize=(20,20))

但是无论我把这最后一行代码放在哪里,都无法产生所需的输出。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果要在同一图形上包含三个图,则需要使用子图并指定每个图的去向

fig, ax = plt.subplots(1, 3,figsize=(20,20))
for idx, key in enumerate(cat_var):       
    for value in cat_var[key]:
        subset= df[df[key] == value]
        sns.distplot(subset['price'], hist = False, ax= ax[idx], kde = True,kde_kws = {'linewidth': 3},label = value)  
plt.show()

具有以下输出:

enter image description here