有没有办法绘制分组条形图并且不显示高度为 0 的条形图留下的空白?

问题描述 投票:0回答:1

我有一个数据集,我需要将其绘制在分组条形图中,但该数据集有很多数据间隙,以至于为高度为 0 的条形留下了痕迹/空间。

我尝试将数据集从宽格式转换为长格式,然后进行多级索引并清理所有空值。 之后,我还尝试清除年份部分,因为我认为这可能有助于分组,我可以向您展示我所做的事情。

所以我的数据集是这样的“我有10个国家,每个国家都有2000年至2021年的数据,现在的问题是有些国家有2000年的数据,而其他国家没有2018年、2019年的数据,而其他国家可能只有2018年、2019年的数据做了多级索引并对索引进行排序,因此索引如下

'Country_Name' 'Years'
和名为
'Value'
的列,但我似乎无法在分组条形图中有效地绘制它。

数据框:

国家/地区名称 价值
0 阿富汗 2015 42.2
1 孟加拉国 2000 60.6
2 孟加拉国 2004年 64.8
3 孟加拉国 2007年 65.4
4 孟加拉国 2011 69.7
5 孟加拉国 2014 72.6
6 孟加拉国 2018 70.3
7 印度 2006年 69.1
8 印度 2016 71.9
9 印度 2021 74.1
10 马尔代夫 2009 42.6
11 马尔代夫 2017 29.8
12 缅甸 2016 74.9
13 尼泊尔 2001 52.8
14 尼泊尔 2006年 60.9
15 尼泊尔 2011 55.9
16 尼泊尔 2016 56
17 巴基斯坦 2007年 39.7
18 巴基斯坦 2013 47
19 巴基斯坦 2018 48.6
dataframe matplotlib plotly visualization data-analysis
1个回答
0
投票

要获取堆积条形图,您可以执行以下操作:

import pandas as pd
import matplotlib.pyplot as plt

# Read the File
ds = pd.read_excel(file)

#Unstack the dataset such that each country name has a separate column
ds2 = ds.groupby(['years', 'Country_Name'])['value'].sum().unstack('Country_Name').fillna(0)

#Plot a stacked barchart
ds2.plot(kind='bar', stacked=True)

在此输入图片描述

© www.soinside.com 2019 - 2024. All rights reserved.