【问题标题】:showing multiple graphs in the same image on python在 python 上的同一图像中显示多个图形
【发布时间】:2021-02-28 01:42:56
【问题描述】:

在创建自己的数据库后,我正在尝试使用与“权重”变量相关的分类变量的“枢轴”功能。 我想在同一图像中显示所有图表,但以下 代码分别打印它们,当我取消注释“plt.subplot()”行时,我仍然得到单独的图表 但更小更空。 我应该怎么做才能在同一张图片中显示所有图表?

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
 
 
data = [['tom', 10,6,'brown',200], ['nick', 15,5.10,'red',150], ['juli', 14,5.5,'black',170]
        ,['peter', 10,6,'blue',290], ['axel', 15,5.10,'yellow',190], ['william', 14,5.5,'yellow',170]
        ,['tom', 10,6,'orange',100], ['thomas', 15,5.10,'brown',150], ['angela', 14,5.5,'black',160]
        ,['peter', 10,6,'purple',220], ['nick', 15,5.10,'orange',150], ['aroon', 14,5.5,'red',170] ]
 
df = pd.DataFrame(data, columns=['Name', 'Age','height','color','weight'])
 
 
categorical_variables= (df.select_dtypes('object').iloc[0:0] ) # categorical variables
categ_var_list=(list(categorical_variables)[:])
print(categ_var_list)
 
count=0
 
for i in categ_var_list:
    count+=1
 
    condition_pivot = df.pivot_table(index=i, values='weight', aggfunc=np.median)
    condition_pivot.plot(kind='bar', color='blue')
 
    plt.xlabel(categ_var_list[count-1])
    plt.ylabel('weight')
    plt.xticks(rotation=0)
 
    #plt.subplot(2,1,count)
plt.show()

【问题讨论】:

    标签: python dataframe subplot


    【解决方案1】:

    你可以使用pyplots.subplots:

    fig,ax = plt.subplots(2,1)
     
    for ax_i,i in enumerate(categ_var_list):
    
        condition_pivot = df.pivot_table(index=i, values='weight', aggfunc=np.median)
        condition_pivot.plot(kind='bar', color='blue',ax=ax[ax_i],rot=0)
    
        ax[ax_i].set_ylabel('weight')
        
    fig.tight_layout()
    

    既然你在融化数据,你也可以使用seaborn

    import seaborn as sns
    g = sns.FacetGrid(df[['Name','color','weight']].melt(id_vars="weight"), 
                      row="variable",sharex=False,sharey=False,aspect=1.7)
    g.map(sns.barplot, "value", "weight",estimator=np.median,ci=None)
    

    【讨论】:

    • 非常感谢。在您的第一个代码中,标签字体是否可以变小?或者尽可能优化空间的方法?由于我想将此代码应用于大型数据集,并且 'fig.tight_layout()' 并不总是有效。
    • 类似ax[ax_i].set_ylabel('weight',fontsize=5)
    猜你喜欢
    • 2012-06-01
    • 1970-01-01
    • 2013-02-19
    • 2012-05-04
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多