我正在查看关于不同年级学生比例的信息,我试图避免使用饼图。相反,下面的样式似乎对我很有吸引力:
有没有办法在matplotlib或相邻的库中实现类似的可视化?我知道我可以使用barh()来表示水平条,但实际上理想的解决方案应该能够取消这里的轴,因为至少y轴在这里是不必要的。
b5buobof1#
你可以使用pandas.DataFrame.plot.barh来制作一个水平的单个堆叠条形图。在这个例子中,我使用了一个与你在Office of National Statistics中找到的数据集相似的数据集来向你展示一般逻辑。试试这个:
pandas.DataFrame.plot.barh
import pandas as pd import requests url= "https://www.ons.gov.uk/file?uri=/peoplepopulationandcommunity/populationandmigration/populationestimates/bulletins/annualmidyearpopulationestimates/mid2018/fa9e61d4.xlsx" excel_file = requests.get(url) ages_labels = ["0-14yrs", "15-64yrs", "65yrs+"] def set_categories(df): df["Category"]= pd.qcut(x= df.pop("Age"), q=[0, 0.16, 0.73, 1], labels=ages_labels) return df ( pd.read_excel(excel_file.content, header=2, usecols="A:B") .apply(pd.to_numeric, errors="coerce") .dropna() .pipe(set_categories) .groupby("Category").sum() .transpose() .plot.barh( stacked= True, width= 0.1, color= ["#3d8881", "#2b7dc0", "#d2417e"], figsize=(7, 3)) )
1条答案
按热度按时间b5buobof1#
你可以使用
pandas.DataFrame.plot.barh
来制作一个水平的单个堆叠条形图。在这个例子中,我使用了一个与你在Office of National Statistics中找到的数据集相似的数据集来向你展示一般逻辑。试试这个:
#输出: