【问题标题】:Barplot per month for all countries in pythonpython中所有国家/地区的每月条形图
【发布时间】:2021-06-02 20:21:15
【问题描述】:

我有显示不同国家温度和日期的数据。

Date  Temperature    Units  Year Month Statistics Country CODE
                                                             
Jan 1991        -26.2  Celsius  1991   Jan    Average  Canada  CAN
Feb 1991        -21.0  Celsius  1991   Feb    Average  Canada  CAN
Mar 1991        -18.2  Celsius  1991   Mar    Average  Canada  CAN
Apr 1991         -8.6  Celsius  1991   Apr    Average  Canada  CAN
May 1991          0.8  Celsius  1991   May    Average  Canada  CAN

我只想为 1991 年的每个月制作一个条形图。我想创建一个循环,所以最后得到 12 个图,每个图有五个不同的条形图(国家),显示 1991 年每个国家/地区的温度.

我这样做了:

tempcountries.groupby(['Country','Month']).plot.bar(y='Temperature',legend=True)
plt.title("Monthly AVerage Temperature")
plt.xlabel('Time')
plt.ylabel('Average Temperature °C')
plt.show()

但我每个国家和每个月得到一个地块,而不是每个国家每个月。 你能帮帮我吗?

【问题讨论】:

    标签: python pandas dataframe matplotlib


    【解决方案1】:

    Seaborn 包可以为您轻松完成此操作。

    import seaborn as sns
    
    # Plot all countries for each month
    sns.catplot(x = 'Country', y = 'Temperature', col = 'Month', kind = 'bar',
                data = tempcountries[tempcountries['Year'] == 1991]
                )
    

    【讨论】:

      【解决方案2】:
      tempcountries.groupby(['Month']).plot.bar(x='Country', y='Temperature',legend=True)
      

      如果您想将这些放在一个图中,seaborn 包提供了一个很好的接口,用于从 pandas DataFrame 中的分类变量创建图形网格。

      import seaborn as sns
      g = sns.FacetGrid(tempcountries, col="Month")
      g.map_dataframe(sns.barplot, y="Temperature", x="Country")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-12-14
        • 1970-01-01
        • 1970-01-01
        • 2020-10-08
        • 1970-01-01
        • 2023-01-20
        • 1970-01-01
        相关资源
        最近更新 更多