Python柱形图

柱形图

柱形图,又称长条图、柱状统计图、条图、条状图、棒形图,是一种以长方形的长度为变量的统计图表。长条图用来比较两个或以上的价值(不同时间或者不同条件),只有一个变量,通常利用于较小的数据集分析。长条图亦可横向排列,或用多维方式表达。柱形图在数据可视化中具有多种作用和用途,包括:

  • 比较:柱形图是比较不同类别或组之间数量差异的常用工具。通过比较矩形条的高度或长度,可以直观地了解各个类别或组的数值大小,从而快速识别出最大值、最小值和趋势变化。

  • 分布:柱形图可以显示数据的分布情况。通过观察矩形条的高度分布,可以了解数据集中在哪些区间或类别上,以及是否存在异常值或离群点。

  • 排名:柱形图可以用于排名不同类别或组的顺序。根据矩形条的高度或长度,可以确定各个类别或组的排名顺序,从而帮助做出决策或优先级排序。

  • 趋势:柱形图可以显示时间或其他变量对数量的影响。通过在不同时间点或变量上绘制矩形条,可以观察到数量的变化趋势,从而帮助预测未来的走势或做出战略决策。

  • 强调:柱形图可以突出显示特定类别或组的重要性。通过增加特定类别或组的矩形条的颜色、阴影或标签,可以使其在图表中更加突出,吸引观察者的注意。

1.bar()

我们可以使用 pyplot 中的 bar() 方法来绘制柱形图。bar() 方法语法格式如下:

matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

2.参数说明

x:浮点型数组,柱形图的 x 轴数据。

height:浮点型数组,柱形图的高度。

width:浮点型数组,柱形图的宽度。

bottom:浮点型数组,底座的 y 坐标,默认 0。

align:柱形图与 x 坐标的对齐方式,‘center’ 以 x 位置为中心,这是默认值。 ‘edge’:将柱形图的左边缘与 x 位置对齐。要对齐右边缘的条形,可以传递负数的宽度值及 align=‘edge’。

**kwargs::其他参数。

简单柱形图

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as npx = np.array(["Runoob-1", "Runoob-2", "Runoob-3", "C-RUNOOB"])
y = np.array([12, 22, 6, 18])plt.bar(x, y,  color = ["#4CAF50","red","hotpink","#556B2F"])
plt.show()

简单柱形图(纵向)

在这里插入图片描述

纵向的柱形图可以使用 barh() 方法来设置:

import matplotlib.pyplot as plt
import numpy as npx = np.array(["Runoob-1", "Runoob-2", "Runoob-3", "C-RUNOOB"])
y = np.array([12, 22, 6, 18])plt.barh(x,y)
plt.show()

两组数据并列柱形图

并列柱形图在数据可视化中有以下几个主要作用:

  • 比较多个类别或组:并列柱形图可以用于比较多个类别或组之间的数值差异。通过将柱形图并列在同一水平位置上,观察者可以直观地比较它们之间的高度差异,从而了解每个类别或组的数值特征。

  • 显示关联关系:并列柱形图可以用于显示多个类别或组之间的关联关系。通过将柱形图并列在一起,观察者可以比较它们之间的相对大小和趋势,从而发现它们之间的关联或相互影响。

  • 强调单个类别或组的变化:并列柱形图可以突出显示单个类别或组的变化情况。通过将柱形图放置在同一水平位置上,观察者可以直接比较它们的高度差异,进而了解每个类别或组的变化程度。

  • 比较不同属性或指标:并列柱形图还可以用于比较不同属性或指标在多个类别或组之间的差异。通过并列柱形图,可以在同一图表中同时显示多个属性或指标的数值,从而方便比较它们之间的差异和关系。
    在这里插入图片描述

import numpy as np
from matplotlib import pyplot as pltplt.figure(figsize=(9, 9))
n = 5
X = np.arange(n) + 1.0
width = 0.3
# width:柱的宽度
# X是1,2,3,4,5,6,7,8,柱的个数
# numpy.random.uniform(low=0.0, high=1.0, size=None), normal
# uniform均匀分布的随机数,normal是正态分布的随机数,0.5-1均匀分布的数,一共有n个
Y1 = np.random.uniform(0.5, 1.0, n)
Y2 = np.random.uniform(0.5, 1.0, n)plt.bar(X - width/2, Y1, width=width, facecolor='lightskyblue', label='1')plt.bar(X + width/2, Y2, width=width, facecolor='yellowgreen', label='2')# 功能1
x_labels = ["G1", "G2", "G3", "G4", "G5"]
# 用第1组...替换横坐标x的值
plt.xticks(X, x_labels)
# 水平柱状图plt.barh,属性中宽度width变成了高度height
# 打两组数据时用+
# facecolor柱状图里填充的颜色
# edgecolor是边框的颜色
# 想把一组数据打到下边,在数据前使用负号
# plt.bar(X, -Y2, width=width, facecolor='#ff9999', edgecolor='white')
# 给图加text# 显示图例
plt.legend()
for x, y in zip(X, Y1):plt.text(x - width/2, y + 0.005, '%.2f' % y, ha='center', va='bottom')for x, y in zip(X, Y2):plt.text(x + width/2, y + 0.005, '%.2f' % y, ha='center', va='bottom')# plt.ylim(0, +1.25)
plt.show()

三组数据并列柱形图

在这里插入图片描述

import numpy as np
from matplotlib import pyplot as pltplt.figure(figsize=(9, 9))
n = 5
X = np.arange(n) + 1.0
width = 0.3
# width:柱的宽度
# X是1,2,3,4,5,6,7,8,柱的个数
# numpy.random.uniform(low=0.0, high=1.0, size=None), normal
# uniform均匀分布的随机数,normal是正态分布的随机数,0.5-1均匀分布的数,一共有n个
Y1 = np.random.uniform(0.5, 1.0, n)
Y2 = np.random.uniform(0.5, 1.0, n)
Y3 = np.random.uniform(0.5, 1.0, n)plt.bar(X - width, Y1, width=width, facecolor='lightskyblue', label='1')plt.bar(X, Y2, width=width, facecolor='yellowgreen', label='2')plt.bar(X + width, Y3, width=width, facecolor='red', label='3')# 功能1
x_labels = ["G1", "G2", "G3", "G4", "G5"]
# 用第1组...替换横坐标x的值
plt.xticks(X, x_labels)
# 水平柱状图plt.barh,属性中宽度width变成了高度height
# 打两组数据时用+
# facecolor柱状图里填充的颜色
# edgecolor是边框的颜色
# 想把一组数据打到下边,在数据前使用负号
# plt.bar(X, -Y2, width=width, facecolor='#ff9999', edgecolor='white')
# 给图加text# 显示图例
plt.legend()
for x, y in zip(X, Y1):plt.text(x - width, y + 0.005, '%.2f' % y, ha='center', va='bottom')for x, y in zip(X, Y2):plt.text(x, y + 0.005, '%.2f' % y, ha='center', va='bottom')for x, y in zip(X, Y3):plt.text(x + width, y + 0.005, '%.2f' % y, ha='center', va='bottom')
# plt.ylim(0, +1.25)
plt.show()

四组数据并列柱形图

在这里插入图片描述

import numpy as np
from matplotlib import pyplot as pltplt.figure(figsize=(12, 9))
n = 5
X = np.arange(n) + 1.0
width = 0.2
# width:柱的宽度
# X是1,2,3,4,5,6,7,8,柱的个数
# numpy.random.uniform(low=0.0, high=1.0, size=None), normal
# uniform均匀分布的随机数,normal是正态分布的随机数,0.5-1均匀分布的数,一共有n个
Y1 = np.random.uniform(0.5, 1.0, n)
Y2 = np.random.uniform(0.5, 1.0, n)
Y3 = np.random.uniform(0.5, 1.0, n)
Y4 = np.random.uniform(0.5, 1.0, n)plt.bar(X - 3*width/2, Y1, width=width, facecolor='lightskyblue', label='1')plt.bar(X - width/2, Y2, width=width, facecolor='b', label='2')plt.bar(X + width/2, Y3, width=width, facecolor='yellowgreen', label='3')plt.bar(X + 3*width/2, Y4, width=width, facecolor='r', label='4')# 功能1
x_labels = ["G1", "G2", "G3", "G4", "G5"]
# 用第1组...替换横坐标x的值
plt.xticks(X, x_labels)
# 水平柱状图plt.barh,属性中宽度width变成了高度height
# 打两组数据时用+
# facecolor柱状图里填充的颜色
# edgecolor是边框的颜色
# 想把一组数据打到下边,在数据前使用负号
# plt.bar(X, -Y2, width=width, facecolor='#ff9999', edgecolor='white')
# 给图加text# 显示图例
plt.legend()
for x, y in zip(X, Y1):plt.text(x - 3*width/2, y + 0.005, '%.2f' % y, ha='center', va='bottom')for x, y in zip(X, Y2):plt.text(x - width/2, y + 0.005, '%.2f' % y, ha='center', va='bottom')for x, y in zip(X, Y3):plt.text(x + width / 2, y + 0.005, '%.2f' % y, ha='center', va='bottom')for x, y in zip(X, Y4):plt.text(x + 3*width / 2, y + 0.005, '%.2f' % y, ha='center', va='bottom')# plt.ylim(0, +1.25)
plt.show()

堆叠柱形图

堆叠柱形图在数据可视化中有以下几个主要作用:

  • 比较组成部分:堆叠柱形图可以用于比较多个类别或组的不同部分在整体中的贡献程度。通过堆叠不同的柱形图,每个柱形图表示一个类别或组,可以直观地比较它们在整体中的相对大小。这对于展示数据的组成结构、分析各部分之间的比例和趋势非常有用。

  • 显示累积效果:堆叠柱形图可以显示多个类别或组的累积效果。每个堆叠柱形图的高度表示该类别或组的总值,而柱形图中的每个部分表示该部分的贡献。通过堆叠不同的柱形图,可以清晰地展示累积效果,例如各类别或组的总销售额随时间的变化情况。

  • 强调总体趋势:堆叠柱形图可以帮助观察者更容易地发现总体趋势。通过比较堆叠柱形图的整体高度,可以直观地判断不同类别或组之间的总体增长或减少趋势。这对于分析数据的总体变化、发现异常情况以及做出决策非常有帮助。

  • 可视化数据分布:堆叠柱形图还可以用于可视化数据的分布情况。通过堆叠不同的柱形图,可以看到每个部分在整体中的相对比例,从而了解数据的分布特征。这对于发现数据的偏差、异常或集中情况非常有用。

在这里插入图片描述

import numpy as np
from matplotlib import pyplot as pltplt.figure(figsize=(9, 12))
n = 5
X = np.arange(n) + 1.0
width = 0.3
# width:柱的宽度
# X是1,2,3,4,5,6,7,8,柱的个数
# numpy.random.uniform(low=0.0, high=1.0, size=None), normal
# uniform均匀分布的随机数,normal是正态分布的随机数,0.5-1均匀分布的数,一共有n个
Y1 = np.random.uniform(0.5, 1.0, n)
Y2 = np.random.uniform(0.5, 1.0, n)
Y3 = np.random.uniform(0.5, 1.0, n)Y11 = np.random.uniform(0.5, 1.0, n)
Y22 = np.random.uniform(0.5, 1.0, n)
Y33 = np.random.uniform(0.5, 1.0, n)plt.bar(X - width, Y1, width=width, facecolor='b', label='1-bottle')
plt.bar(X - width, Y11, width=width, bottom=Y1, facecolor='lightskyblue', label='1-top')plt.bar(X, Y2, width=width, facecolor='g', label='2-bottle')
plt.bar(X, Y22, width=width, bottom=Y2, facecolor='yellowgreen', label='2-top')plt.bar(X + width, Y3, width=width, facecolor='red', label='3-bottle')
plt.bar(X + width, Y33, bottom=Y3, width=width, facecolor='y', label='3-top')# 功能1
x_labels = ["G1", "G2", "G3", "G4", "G5"]
# 用第1组...替换横坐标x的值
plt.xticks(X, x_labels)
# 水平柱状图plt.barh,属性中宽度width变成了高度height
# 打两组数据时用+
# facecolor柱状图里填充的颜色
# edgecolor是边框的颜色
# 想把一组数据打到下边,在数据前使用负号
# plt.bar(X, -Y2, width=width, facecolor='#ff9999', edgecolor='white')
# 给图加text# 显示图例
plt.legend()
for x, y in zip(X, Y1+Y11):plt.text(x - width, y + 0.005, '%.2f' % y, ha='center', va='bottom')for x, y in zip(X, Y2+Y22):plt.text(x, y + 0.005, '%.2f' % y, ha='center', va='bottom')for x, y in zip(X, Y3+Y33):plt.text(x + width, y + 0.005, '%.2f' % y, ha='center', va='bottom')
# plt.ylim(0, +1.25)
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/149870.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

投资理财:利率下行时代应该怎样存钱?

大家好,我是财富智星,今天跟大家分享一下当下利率下行的时代,钱应该怎样存,存哪里的问题。 一、 银行利率下行 在过去的三十年里,您已经逐渐适应了不断下降的利率,从10%到现在的1.65%。而在未来&#xff0c…

迄今为止丨ChatGPT最强指令,一个可以让机器人生成机器人的Prompt,价值百万!

原文: 【ChatGPT调教】ChatGPT最强指令、让机器人为你生成机器人!-CSDN博客 说明:最好看原文 昨天,发现了一条可能是迄今为止,我见过最牛的,商业价值最高的ChatGPT指令。 通过这条指令,可以…

1400*C. Soldier and Cards(贪心模拟)

Problem - 546C - Codeforces Soldier and Cards - 洛谷 解析&#xff1a; 模拟即可&#xff0c;当循环次数过大的时候跳出循环打印 -1 #include<bits/stdc.h> using namespace std; #define int long long const int N2e55; int n,x,k1,k2,cnt; queue<int>a,b;…

[黑马程序员TypeScript笔记]------一篇就够了

目录&#xff1a; TypeScript 介绍 TypeScript 是什么&#xff1f;TypeScript 为什么要为 JS 添加类型支持&#xff1f;TypeScript 相比 JS 的优势TypeScript 初体验 安装编译 TS 的工具包 编译并运行 TS 代码 简化运行 TS 的步骤 TypeScript 常用类型 概述类型注解常用基础…

MATLAB算法实战应用案例精讲-【优化算法】沙丁鱼优化算法(SOA)(附MATLAB代码实现)

前言 沙丁鱼优化算法(Sardine optimization algorithm,SOA)由Zhang HongGuang等人于2023年提出,该算法模拟沙丁鱼的生存策略,具有搜索能力强,求解精度高等特点。 沙丁鱼主要以浮游生物为食,这些生物包括细菌、腔肠动物、软体动物、原生动物、十足目、幼小藤壶、鱼卵、甲藻…

LeetCode 面试题 08.02. 迷路的机器人

文章目录 一、题目二、C# 题解 一、题目 设想有个机器人坐在一个网格的左上角&#xff0c;网格 r 行 c 列。机器人只能向下或向右移动&#xff0c;但不能走到一些被禁止的网格&#xff08;有障碍物&#xff09;。设计一种算法&#xff0c;寻找机器人从左上角移动到右下角的路径…

【C++设计模式之建造者模式:创建型】分析及示例

简介 建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;它将复杂对象的构建过程与其表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 描述 建造者模式通过将一个复杂对象的构建过程拆分成多个简单的部分&#xff0c;并由不同…

OpenGLES:绘制一个混色旋转的3D圆柱

效果展示 本篇博文会实现两种混色效果的3D圆柱&#xff1a; 一.圆柱体解析 上一篇博文讲解了怎么绘制一个混色旋转的立方体 这一篇讲解怎么绘制一个混色旋转的圆柱 圆柱的顶点创建主要基于2D圆进行扩展&#xff0c;与立方体没有相似之处 圆柱绘制的关键点就是将圆柱拆解成…

【TensorFlow Hub】:有 100 个预训练模型等你用

要访问TensorFlow Hub&#xff0c;请单击此处 — https://www.tensorflow.org/hub 一、说明 TensorFlow Hub是一个库&#xff0c;用于在TensorFlow中发布&#xff0c;发现和使用可重用模型。它提供了一种使用预训练模型执行各种任务&#xff08;如图像分类、文本分析等&#xf…

Docker 配置基础优化

Author&#xff1a;rab 为什么要优化&#xff1f; 你有没有发现&#xff0c;Docker 作为线上环境使用时&#xff0c;Docker 日志驱动程序的日志、存储驱动数据都比较大&#xff08;尤其是在你容器需要增删比较频繁的时候&#xff09;&#xff0c;动不动就好几百 G 的大小&…

节日灯饰灯串灯出口欧洲CE认证办理

灯串&#xff08;灯带&#xff09;&#xff0c;这个产品的形状就象一根带子一样&#xff0c;再加上产品的主要原件就是LED&#xff0c;因此叫做灯串或者灯带。2022年&#xff0c;我国灯具及相关配件产品出口总额超过460亿美元。其中北美是最大的出口市场。其次是欧洲市场&#…

【STM32 LVGL基础教程】初识LVGL

文章目录 前言一、什么是LVGL&#xff1f;二、LVGL的诞生历程三、LVGL的用途四、模拟器使用LVGL4.1 下载codeblocks并运行模拟器lvgl4.2 更改lvgl设置更改帧数更改颜色深度 五、STM32使用LVGL总结 前言 嵌入式系统中的图形用户界面&#xff08;GUI&#xff09;已经成为现代设备…

基于goravel的CMS,企业官网通用golang后台管理系统

2023年9月11日10:47:00 仓库地址&#xff1a; https://gitee.com/open-php/zx-goravel-website 框架介绍 Goravel SCUI 后端开发组件 go 1.20 Goravel 1.13 数据库 sql(使用最新日期文件) goravel\doc\sql_bak mysql 8.0 前端开发组件 scui 1.6.9 node v14.21.3 效果图…

基于自私羊群优化的BP神经网络(分类应用) - 附代码

基于自私羊群优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于自私羊群优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.自私羊群优化BP神经网络3.1 BP神经网络参数设置3.2 自私羊群算法应用 4.测试结果…

uni-app实现图片预览

uni.previewImage预览图片 使用方法&#xff1a; <image class"poster" :src"imageUrl" mode"" click"previewImg(imageUrl)"></image>const previewImg (e) > {uni.previewImage({current: e,urls: image}); } 官…

vulnhub靶机doubletrouble

下载地址&#xff1a;doubletrouble: 1 ~ VulnHub 主机发现 arp-scan -l 端口扫描 nmap --min-rate 1000 -p- 192.168.21.151 端口服务扫描 nmap -sV -sT -O -p22,80 192.168.21.151 漏洞扫描 nmap --scriptvuln -p22,80 192.168.21.151 先去看看web页面 这里使用的是qdpm …

提升您的 Go 应用性能的 6 种方法

优化您的 Go 应用程序 1. 如果您的应用程序在 Kubernetes 中运行&#xff0c;请自动设置 GOMAXPROCS 以匹配 Linux 容器的 CPU 配额 Go 调度器 可以具有与运行设备的核心数量一样多的线程。由于我们的应用程序在 Kubernetes 环境中的节点上运行&#xff0c;当我们的 Go 应用程…

探秘布隆过滤器:高效数据查找与去重利器

探秘布隆过滤器&#xff1a;高效数据查找与去重利器 引言 在现代计算机科学中&#xff0c;数据的查找与去重是一个至关重要的问题。本文将介绍一种高效的数据结构——布隆过滤器&#xff0c;它能够在海量数据中快速判断某个元素是否存在&#xff0c;同时具有出色的空间效率。…

【数据恢复篇】浅谈FTK Imager数据恢复功能

【数据恢复篇】浅谈FTK Imager数据恢复功能 日常取证工作中&#xff0c;常用FTK Imager制作磁盘镜像、挂载镜像等&#xff0c;但FTK Imager的数据恢复功能也是非常强大的&#xff0c;某些数据的恢复效果不输专业的数据恢复软件&#xff0c;甚至略胜一筹—【蘇小沐】 文章目录 …

突破封锁|华为芯片10年进化史:从K3V1到麒麟9000S

华为海思麒麟芯片过去10年研发历程回顾如下&#xff1a; 2009年&#xff1a;华为推出第一款手机芯片K3V1&#xff0c;采用65nm工艺制程&#xff0c;基于ARM11架构&#xff0c;主频600MHz&#xff0c;支持WCDMA/GSM双模网络。这款芯片搭载在华为U8800手机上&#xff0c;标志着华…