使用 matplotlib 获取叠加直方图

Using matplotlib to obtain an overlaid histogram

我是 python 的新手,我正在尝试为来自 Kaggle 的操纵数据集绘制叠加直方图。我试着用 matplotlib 来做。这是一个展示美国近年来枪支暴力历史的数据集。我只为 EDA 选择了几列。

 import pandas as pd

 data_set = pd.read_csv("C:/Users/Lenovo/Documents/R related 
 Topics/Assignment/Assignment_day2/04 Assignment/GunViolence.csv")
 state_wise_crime = data_set[['date', 'state', 'n_killed', 'n_injured']]

 date_value = pd.to_datetime(state_wise_crime['date'])

 import datetime

 state_wise_crime['Month']= date_value.dt.month
 state_wise_crime.drop('date', axis = 1)

 no_of_killed = state_wise_crime.groupby(['state','Year']) 
 ['n_killed','n_injured'].sum()

 no_of_killed = state_wise_crime.groupby(['state','Year'] 
 ['n_killed','n_injured'].sum()

I want an overlaid histogram that shows the no. of people killed and no.of people injured with the different states on the x-axis

欢迎来到 Stack Overflow!从下次开始,请 post 您的数据采用以下格式(不是 link 或图像),以便我们更轻松地解决问题。此外,如果您询问图形输出,显示所需图形的内容(即使是手绘)将非常有帮助:)


df

    state   Year    n_killed    n_injured
0   Alabama 2013    9           3
1   Alabama 2014    591         325
2   Alabama 2015    562         385
3   Alabama 2016    761         488
4   Alabama 2017    856         544
5   Alabama 2018    219         135
6   Alaska  2014    49          29
7   Alaska  2015    84          70
8   Alaska  2016    103         88
9   Alaska  2017    70          69

正如我在您原来的 post 中评论的那样,在这种情况下,条形图比直方图更合适,因为您的目的似乎是通过州级比较可视化每年的汇总统计数据(总和) .据我所知,最简单的选择是使用 Seaborn。这取决于您希望如何显示数据,但下面是一个示例。代码就这么简单

import seaborn as sns    
sns.barplot(x='Year', y='n_killed', hue='state', data=df)

输出:

希望这对您有所帮助。