当前位置: 首页 > news >正文

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.lryc.cn/news/183437.html

相关文章:

  • 用OpenCV(Python)获取图像的SIFT特征
  • 阿里云ECS和轻量服务器有什么区别?
  • 华为云云耀云服务器L实例评测|安装搭建学生成绩管理系统
  • Audacity 使用教程:轻松录制、编辑音频
  • 深入了解“注意力”和“变形金刚”-第2部分
  • ​“债务飙升!美国一天内增加2750亿美元,金融震荡的前奏已拉开帷幕!”
  • 最新Uniapp软件社区-全新带勋章源码
  • 基于goravel的CMS,企业官网通用golang后台管理系统
  • (五)激光线扫描-位移台标定
  • 媒体发稿:为什么选择国内媒体推广一文带你领略其魅
  • 基于自私羊群优化的BP神经网络(分类应用) - 附代码
  • AI绘图:GPT4技术的艺术化呈现与无限可能
  • Go Gin Gorm Casbin权限管理实现 - 1. Casbin概念介绍以及库使用
  • JUC第十五讲:JUC集合-ConcurrentHashMap详解(面试的重点)
  • 【TensorFlow Hub】:有 100 个预训练模型等你用
  • vulnhub靶机doubletrouble
  • 【数据结构】排序算法(二)—>冒泡排序、快速排序、归并排序、计数排序
  • SpringCloud-消息组件
  • oringin的x轴(按x轴规定值)绘制不规律的横坐标
  • ubuntu安装MySQL
  • 背包问题学习笔记-多重背包问题
  • Net相关的各类开源项目
  • 阿里云服务器修改IP地址的两种方法
  • SpringMVC的数据绑定
  • 1.1.OpenCV技能树--第一单元--OpenCV简介
  • transformer不同的包加载模型的结构不一样
  • 【MyBatis-Plus】快速精通Mybatis-plus框架—核心功能
  • C语言:选择+编程(每日一练Day9)
  • 蓝桥等考Python组别十三级003
  • 2023年CSP-J真题详解+分析数据(选择题篇)