多年的迭代,以绘制不同的组值,如图中的条形图

2024-09-30 00:23:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框,它记录了不同年份不同地点的观测数量。我试图制作一个条形图,在这里我可以显示不同年份在不同地点的观测总数。对于每个位置,我希望不同年份的总观测值以不同的颜色显示。 我的方法是首先建立位置组,并为每个位置组计算总观察值。(我不认为我需要将索引更改为最新,因为我是按位置分组的)。非常感谢您的帮助

fig, ax = plt.subplots(figsize=(40,15))
date=df['date']
value=df['value']
df.date = pd.to_datetime(df.date)


year_start=2015
year_stop = 2019
#ax=plt.gca()

for year in range(year_start, year_stop+1):
    ax=plt.gca()
    m=df.groupby(['location']).agg({'value': ['count']})


    plt.ylim(0,45000)
    m.plot(kind='bar', legend = False, figsize=(30,15), fontsize = 30)
    #ax.tick_params(axis='both', which='major', labelsize=25)
    plt.ylabel('Number of observations - O3', fontsize = 30, fontweight = 'bold')    

    plt.legend(loc='upper right', prop={'size': 7})
    fig_title='Diurnal_'+place
    plt.savefig(fig_title, format='png',dpi=500, bbox_inches="tight")

    print ('saved=', fig_title)
    plt.show()


The header looks like this:
                             date_utc                       date parameter  \
    212580  {utc=2020-01-05T05:45:00.000Z  2020-01-05T11:15:00+05:30        o3   
    212581  {utc=2020-01-05T05:45:00.000Z  2020-01-05T11:15:00+05:30        o3   
    212582  {utc=2020-01-05T05:45:00.000Z  2020-01-05T11:15:00+05:30        o3   
    212583  {utc=2020-01-05T05:45:00.000Z  2020-01-05T11:15:00+05:30        o3   
    212584  {utc=2020-01-05T05:45:00.000Z  2020-01-05T11:15:00+05:30        o3   

                                               location  value   unit       city  \
    212580        ICRISAT Patancheru, Mumbai - TSPCB   37.7  µg/m³  Hyderabad   
    212581  Bollaram Industrial Area, Surat - TSPCB   39.5  µg/m³  Hyderabad   
    212582          IDA Pashamylaram, Surat - TSPCB   17.8  µg/m³  Hyderabad   
    212583               Sanathnagar, Hyderabad - TSPCB   56.6  µg/m³  Hyderabad   
    212584                  Zoo Park, Hyderabad - TSPCB   24.5  µg/m³  Hyderabad   

Tags: dfdatetitlevaluefigpltaxyear
1条回答
网友
1楼 · 发布于 2024-09-30 00:23:02

因为我无法完全复制您的示例,所以根据我的理解实现了一个玩具示例。如果我理解错了,请告诉我。这是我的密码:

import seaborn as sns
import numpy as np
import pandas as pd


df = pd.DataFrame([['Mumbai',2017,10],['Mumbai',2017,12],['Mumbai',2018,20],['Mumbai',2018,23],['Abu Dhabi',2017,30],['Abu Dhabi', 2018,25]], columns =['Place','Year','Amount'])

df_grouped = df.groupby(['Place','Year']).agg({'Amount':'count'}).reset_index()

sns.barplot(x='Place',y='Amount',hue='Year',data= df_grouped)

该代码将显示一个条形图,其中每个位置将位于x轴,其总计数位于y轴。此外,每个独特的年份都会在条形图中有自己的条形图。像这样:

enter image description here

相关问题 更多 >

    热门问题