【matplotlib 实战】--百分比柱状图

这篇具有很好参考价值的文章主要介绍了【matplotlib 实战】--百分比柱状图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

百分比堆叠式柱状图是一种特殊的柱状图,它的每根柱子是等长的,总额为100%。
柱子内部被分割为多个部分,高度由该部分占总体的百分比决定。

百分比堆叠式柱状图不显示数据的“绝对数值”,而是显示“相对比例”。
但同时,它也仍然具有柱状图的固有功能,即“比较”——我们可以通过比较多个柱子的构成,分析数值之间的相对差异,或者得出数值变化的趋势。

1. 主要元素

百分比柱状图是一种用于可视化比较不同类别或组的百分比或比例的图表。

它的主要元素包括:

  1. 横轴:表示数据的主分类。
  2. 纵轴:每个子分类的比例关系。
  3. 堆叠的矩形:每个柱状图由多个堆叠部分组成,和堆叠柱状图不同的是,每个柱子都是一样高的。
  4. 图例:每个堆叠部分代表的意义。

【matplotlib 实战】--百分比柱状图

2. 适用的场景

百分比柱状图适用的场景很多,比如:

  • 市场份额:比较不同产品或服务的市场份额,帮助决策者了解市场竞争情况。
  • 人口比例:显示不同地区或不同群体的人口比例,或不同年龄段的人口比例。
  • 问卷调查结果:比较不同选项或答案的频率或比例,或者用户对产品特性的满意度。
  • 部门预算分配:显示不同部门或项目的预算分配比例,帮助管理者了解资源分配情况。
  • 等等。。。

3. 不适用的场景

百分比柱状图也有不适用于的场景,比如:

  • 比较绝对数值:如果需要比较具体的数值大小而不仅仅是比例,那么百分比柱状图可能不是最合适的选择。
  • 数据存在重叠:如果不同类别的数据存在重叠或者相互依赖的情况,百分比柱状图可能无法清晰地展示比例关系。
  • 数据量过大或过小:如果数据量过大或过小,百分比柱状图可能无法有效地显示比例关系。

4. 分析实战

和上一篇堆叠柱状图使用相同的原始数据,绘制图形之后可以看看这两种柱状图展示分析结果的区别。

4.1. 数据来源

数据来自国家统计局公开的人民生活数据,可从下面的网址下载:
https://databook.top/nation/A0A

使用的是其中 A0A0A.csv文件(全国居民主要食品消费量)

fp = "d:/share/A0A0A.csv"

df = pd.read_csv(fp)
df

【matplotlib 实战】--百分比柱状图

4.2. 数据清理

选取和上一篇堆叠柱状图一样,还是5类:

  1. 居民人均蔬菜及食用菌消费量(千克)
  2. 居民人均肉类消费量(千克)
  3. 居民人均禽类消费量(千克)
  4. 居民人均水产品消费量(千克)
  5. 居民人均蛋类消费量(千克)

和堆叠柱状图不同的是,绘制百分比柱状图用的是百分比数值,
所有要把原始数据中每年的绝对数值转换为百分比数值。

data = df[(df["sj"] >= 2013) & 
        (df["sj"] <= 2021) & 
        (df["zb"].isin(["A0A0A03", 
                        "A0A0A04",
                        "A0A0A05",
                        "A0A0A06",
                        "A0A0A07"]))].copy()

data["年消耗总量"] = data.groupby("sj").value.transform("sum")
data["各类消耗量占比"] = data["value"] / data["年消耗总量"]

data.loc[:, ["sjCN", "zbCN", "各类消耗量占比"]].head(10)

【matplotlib 实战】--百分比柱状图

4.3. 分析结果可视化

import matplotlib.ticker as mticker

data = data.sort_values("sj")
data["各类消耗量占比"] = data["各类消耗量占比"]*100

with plt.style.context("seaborn-v0_8"):
    fig = plt.figure()
    ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])

    years = data["sjCN"].drop_duplicates(keep="first").tolist()
    bar_data = {
        "蔬菜及菌类(%)": data[data["zb"] == "A0A0A03"]["各类消耗量占比"].tolist(),
        "肉类(%)": data[data["zb"] == "A0A0A04"]["各类消耗量占比"].tolist(),
        "禽类(%)": data[data["zb"] == "A0A0A05"]["各类消耗量占比"].tolist(),
        "水产品(%)": data[data["zb"] == "A0A0A06"]["各类消耗量占比"].tolist(),
        "蛋类(%)": data[data["zb"] == "A0A0A07"]["各类消耗量占比"].tolist(),
    }

    bottom = np.zeros(len(years))
    for key, vals in bar_data.items():
        ax.bar(years, vals, label=key, bottom=bottom)
        bottom += vals

    # 设置Y轴刻度的显示格式
    ax.set_ylim(0, 110)
    yticks = ax.get_yticks().tolist()
    ax.yaxis.set_major_locator(mticker.FixedLocator(yticks))
    ax.set_yticklabels(["{}%".format(x) for x in yticks])

    ax.set_title("全国居民主要粮食消耗情况")
    ax.legend(loc="upper left", ncol=5)

【matplotlib 实战】--百分比柱状图

百分比柱状图每年的数据高度都一样,与堆叠柱状图相比,更容易比较每个种类粮食的消耗情况。
不过,这种图看不出粮食总量的变化情况了。文章来源地址https://www.toymoban.com/news/detail-711614.html

到了这里,关于【matplotlib 实战】--百分比柱状图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 100天精通Python(可视化篇)——第93天:Pyecharts绘制多种炫酷饼图参数说明+代码实战(百分比、环形、玫瑰、内嵌、多个子图饼图)

    🔥🔥 本文已收录于 《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:

    2024年02月11日
    浏览(8)
  • 在视频中选定/截取部分区域画面,然后将左上角坐标百分比和选定区域宽高所占百分比传给后端

    在视频中选定/截取部分区域画面,然后将左上角坐标百分比和选定区域宽高所占百分比传给后端

    在视频中选定部分区域,然后将左上角坐标百分比和选定区域宽高所占百分比传给后端 播放 flv 格式视频 点击“截取”按钮,将视频当前画面截取为一张图片并回显图片, 使用 Cropper 插件截取图片部分区域(可以获取到截取图片左上角点坐标和截取部分的宽高) cropperjs 参数

    2024年02月03日
    浏览(12)
  • (vue)多级表头且转为百分比显示
  • 移动端布局之流式布局1(百分比布局)

    移动端布局之流式布局1(百分比布局)

    流式布局,就是百分比布局,也称非固定像素布局 通过盒子的宽度设置成百分比来根据屏幕的宽度来进行伸缩,不受固定像素的限制,内容向两侧填充 流式布局方式是移动web开发使用的比较常见的布局方式 max-width 最大宽度(max-height 最大高度) min-width 最小宽度(min-height

    2024年02月06日
    浏览(10)
  • 鸿蒙OS应用开发之百分比显示组件

    前面学习了动态加载的组件,在本文里将要学习百分比显示组件,这个组件可以把数据按百分比的情况进行图形显示出来。百分比图形显示还是很有用的,比如一个班里学生的成绩占比,还有软件项目开发进度的情况,还有软件下载进度等等。 在鸿蒙系统里定义这个组件接口

    2024年01月20日
    浏览(19)
  • 一文搞懂:viewpoint与rem、百分比、px

    ​一个表总结: 名称 定义 使用示例 viewpoint 是指用户在网页上实际可见和可交互的区域,通常指的是浏览器窗口或移动设备的屏幕尺寸。 width:100vw;height:100vh rem (root em)是相对于根元素(通常是 html 元素)的字体大小来计算的单位。 width:100rem;height:100rem 百分比 是

    2024年03月19日
    浏览(15)
  • 记录vue项目用到的水波纹 百分比 进度

     echarts-liquidfill  git地址:mirrors / ecomfe / echarts-liquidfill · GitCode 示例:echarts图表集 前置条件,安装echarts,同时还需要安装echarts-liquidfill 注意 :echarts-liquidfill@3 版本匹配 echarts@5 版本,echarts-liquidfill@2 版本匹配 echarts@4 版本 在main.js中引入 初始化图形方法

    2024年02月16日
    浏览(9)
  • js 四舍五入保留一位小数 求百分比

    概览:一个数据占一组数据的比率,并且四舍五入保留一位小数。通过Math.round()四舍五入。 参考链接: mdn中文文档Math.round() 实现思路: Math.round(x)  函数返回一个数字四舍五入后最接近的整数。参数x是一个数值 实现代码: 保留一位小数: Math.round(num* 1000) / 10 

    2024年02月15日
    浏览(12)
  • Echarts饼状legend如何自动显示值和百分比

    Echarts饼状legend如何自动显示值和百分比

    效果图如下,   重点在legend里如何设置   显示值和百分比     重点在legend里如何设置   显示值和百分比  

    2024年02月11日
    浏览(10)
  • html浏览器进行缩放百分比 界面和文字保持不变

    html浏览器进行缩放百分比 界面和文字保持不变

    400%效果 50%效果

    2024年02月03日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包